當前位置:首頁 » 編程語言 » connectorpython

connectorpython

發布時間: 2025-05-14 09:48:50

㈠ 如何使用python連接mysql資料庫

在 Python 語言環境下我們這樣連接資料庫。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是連接資料庫的背後發生了什麼呢?


答案

當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由MySQL 協議規定。MySQL 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。

  • MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。

  • 2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。

    3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。

    4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。

㈡ Python 進階知識全篇-Python MySQL - mysql-connector

MySQL 是廣泛使用的資料庫管理系統,如果你對 MySQL 不夠熟悉,建議先閱讀我們的 MySQL 教程。此教程將帶你深入了解如何通過 mysql-connector 來連接和操作 MySQL。

mysql-connector 是 MySQL 官方提供的驅動程序,能夠幫助你輕松實現 Python 與 MySQL 之間的交互。你只需要使用 pip 命令安裝它,具體命令如下:

python -m pip install mysql-connector

為驗證安裝是否成功,可以嘗試運行以下測試代碼:

import mysql.connector

執行此代碼後若未出現錯誤提示,說明安裝已成功。

若你的 MySQL 版本為 8.0,則需注意密碼驗證方式已從 mysql_native_password 更改為 caching_sha2_password。因此,在安裝驅動後,還需對 my.ini 配置文件進行修改,並執行相應的 SQL 命令以確保密碼驗證方式符合新版本要求。更多詳細操作,可以參考:闕贊:Python MySQL8.0 錯誤創建資料庫連接。

連接資料庫的操作可以通過以下 Python 代碼實現:

import mysql.connector

嘗試連接資料庫,如果資料庫不存在,代碼將輸出相應的錯誤信息。

資料庫的創建則使用 "CREATE DATABASE" 語句。以下代碼示例創建了一個名為 runoob_db 的資料庫:

創建資料庫前,可以使用 "SHOW DATABASES" 命令查看當前是否存在特定資料庫:

執行此命令後,你將看到資料庫列表。若資料庫已存在,嘗試再次創建將收到錯誤信息。

為了實現數據表的創建,我們使用 "CREATE TABLE" 語句。例如,以下代碼創建了一個名為 sites 的數據表,包含欄位 name 和 url:

執行此代碼後,資料庫中將出現名為 sites 的數據表。

可以使用 "SHOW TABLES" 命令查看數據表是否已成功創建。

通常,我們會為主鍵設置一個 INT AUTO_INCREMENT PRIMARY KEY,確保起始值為 1,並逐步遞增。如果表已創建,可通過 ALTER TABLE 命令添加主鍵。

插入數據的關鍵操作使用 "INSERT INTO" 語句。以下代碼插入了一條數據至 sites 表:

執行後,數據表中應新增一條記錄。

批量插入數據時,利用 executemany() 方法,該方法接收元組列表作為參數,包含要插入的數據。下面代碼示例批量插入多條記錄至 sites 表:

執行後,輸出應為插入記錄成功的信息。

在數據插入後,若需獲取新記錄的 ID,可使用以下代碼:

執行此代碼後,輸出應為插入記錄成功,並顯示其 ID。

查詢數據使用 SELECT 語句,以下代碼示例展示如何獲取 sites 表中的所有數據:

執行後,輸出結果將包含所有記錄。

若僅需讀取特定欄位的數據,可以通過指定欄位來獲取。同樣,利用 SELECT 語句,以下代碼展示如何獲取 sites 表中指定欄位的數據:

執行後,輸出結果將只包含指定欄位。

如果只讀取一條數據,可以使用 fetchone() 方法。以下代碼示例展示如何僅讀取第一條數據:

執行此代碼後,輸出結果應為一條記錄。

使用 where 語句可以讀取特定條件的數據。以下代碼示例讀取 name 欄位為 'SHUAIGEGE' 的記錄:

執行後,輸出結果應為符合條件的記錄。

通配符 % 可以用來匹配包含特定字元串的數據。以下代碼示例讀取包含 'google' 的記錄:

執行後,輸出結果應為包含 'google' 的所有記錄。

為了防止 SQL 注入攻擊,使用 %s 佔位符來轉義查詢條件。以下代碼示例展示如何安全地執行查詢:

執行此代碼後,輸出結果應為安全查詢到的數據。

數據查詢結果可以通過 ORDER BY 語句進行排序,默認為升序,關鍵字為 ASC。若需設置降序排序,使用 DESC 關鍵字。以下代碼示例展示如何按 name 欄位升序排序查詢結果:

執行後,輸出結果應為按 name 欄位升序排序後的所有記錄。

降序排序的實現方法與升序類似,只需將 ASC 替換為 DESC 關鍵字。以下代碼示例展示如何按 name 欄位降序排序查詢結果:

執行後,輸出結果應為按 name 欄位降序排序後的所有記錄。

限制查詢結果的數量可通過 LIMIT 語句實現,該語句允許指定返回的具體記錄數。以下代碼示例展示如何獲取前 3 條記錄:

執行後,輸出結果應為前 3 條記錄。

OFFSET 關鍵字用於指定起始位置,從而獲取特定范圍內的記錄。以下代碼示例展示如何從第二條記錄開始獲取前 3 條記錄:

執行後,輸出結果應為從第二條記錄開始的前 3 條記錄。

刪除記錄時,使用 DELETE FROM 語句,確保使用 WHERE 條件語句來指定要刪除的記錄,避免誤刪整個表。以下代碼示例展示如何刪除 name 為 'stackoverflow' 的記錄:

執行後,輸出結果應為刪除的記錄數量。

為了防止 SQL 注入攻擊,使用 %s 佔位符轉義刪除條件。以下代碼示例展示如何安全地執行刪除操作:

執行後,輸出結果應為刪除的記錄數量。

更新表數據使用 UPDATE 語句,確保使用 WHERE 條件語句指定更新的數據行。以下代碼示例展示如何將 name 為 'Zhihu' 的記錄更新為 'ZH':

執行後,輸出結果應為更新的記錄數量。

使用 %s 佔位符轉義更新條件,以防止 SQL 注入攻擊。以下代碼示例展示如何安全地執行更新操作:

執行後,輸出結果應為更新的記錄數量。

刪除表使用 DROP TABLE 語句,確保使用 IF EXISTS 關鍵字來判斷表是否存在,避免操作不存在的表。以下代碼示例展示如何刪除名為 sites 的表:

熱點內容
分布式緩存部署步驟 發布:2025-05-14 13:24:51 瀏覽:609
php獲取上一月 發布:2025-05-14 13:22:52 瀏覽:89
購買雲伺服器並搭建自己網站 發布:2025-05-14 13:20:31 瀏覽:688
sqlserver建立視圖 發布:2025-05-14 13:11:56 瀏覽:484
搭建httpsgit伺服器搭建 發布:2025-05-14 13:09:47 瀏覽:255
新電腦拿回來我該怎麼配置 發布:2025-05-14 13:09:45 瀏覽:240
視頻伺服器新建ftp用戶 發布:2025-05-14 13:03:09 瀏覽:225
php花生 發布:2025-05-14 12:54:30 瀏覽:550
java人才 發布:2025-05-14 12:29:10 瀏覽:649
如何打開軟密碼 發布:2025-05-14 12:28:55 瀏覽:427