從 2.1.1 版本開始的 Connector/Python 安裝支援 mysql.connector.connect()
的 use_pure
引數,該引數指示是使用純 Python 介面來連接 MySQL 還是使用 MySQL C 客戶端程式庫的 C 擴展。
預設情況下,從 MySQL 8 開始,
use_pure
(使用純 Python 實作) 為False
,在較早版本中預設為True
。如果系統上沒有可用的 C 擴展,則use_pure
為True
。-
在 Linux 上,C 和 Python 實作可作為不同的套件使用。您可以在同一個系統上安裝一個或兩個實作。在 Windows 和 macOS 上,套件都包含這兩個實作。
對於包含兩個實作的 Connector/Python 安裝,可以選擇透過傳遞
use_pure=False
(使用 C 實作) 或use_pure=True
(使用 Python 實作) 作為mysql.connector.connect()
的引數來切換。 對於不包含 C 擴展的 Connector/Python 安裝,將
use_pure=False
傳遞給mysql.connector.connect()
會引發例外。對於不了解 C 擴展的較舊 Connector/Python 安裝(2.1.1 版本之前),無論其值為何,將
use_pure
傳遞給mysql.connector.connect()
都會引發例外。
在 macOS 上,如果您的 Connector/Python 安裝包含 C 擴展,但 Python 腳本無法使用它,請嘗試將 DYLD_LIBRARY_PATH
環境變數設定為包含 C 客戶端程式庫的目錄。例如
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib (for sh)
setenv DYLD_LIBRARY_PATH /usr/local/mysql/lib (for tcsh)
如果您是從原始碼建置 C 擴展,則此目錄應該是包含建置擴展所依據的 C 客戶端程式庫的目錄。
如果您需要檢查您的 Connector/Python 安裝是否知道 C 擴展,請測試 HAVE_CEXT
值。這有不同的方法。假設您用於 mysql.connector.connect()
的常用引數是在字典中指定
config = {
'user': 'scott',
'password': 'password',
'host': '127.0.0.1',
'database': 'employees',
}
以下範例說明一種將 use_pure
新增至連線引數的方法
import mysql.connector
if mysql.connector.__version_info__ > (2, 1) and mysql.connector.HAVE_CEXT:
config['use_pure'] = False
如果 use_pure=False
且 C 擴展不可用,則 Connector/Python 會自動退回使用純 Python 實作。