Python:怎樣連接 MySQL 數據庫及錯誤處理

最近更新時間 2020-11-25 16:46:57

MySQL 提供了 Python 的官方鏈接庫 mysql-connector-python 操作數據庫,下面介紹數據庫的鏈接,及錯誤處理。

安裝 Connector/Python

pip install mysql-connector-python

連接數據庫

connect() 方法成功連接 MySQL 數據庫後返回 MySQLConnection 對象。

下面的代碼通過用戶名和密碼等信息連接到數據庫,使用完數據庫後需要關閉連接。

import mysql.connector

cnx = mysql.connector.connect(user='scott', password='password',
                              host='127.0.0.1',
                              database='employees')
cnx.close()

也可以通過 connection.MySQLConnection() 連接數據庫,如下所示:

from mysql.connector import (connection)

cnx = connection.MySQLConnection(user='scott', password='password',
                                 host='127.0.0.1',
                                 database='employees')
cnx.close()

以上兩種方式都可以正常連接數據庫,但一般更喜歡使用 connect() 方式連接。

可以通過 ** 操作符指定傳入的參數,如下所示。

import mysql.connector

config = {
  'user': 'scott',
  'password': 'password',
  'host': '127.0.0.1',
  'database': 'employees',
  'raise_on_warnings': True
}

cnx = mysql.connector.connect(**config)

cnx.close()

處理錯誤信息

通過 try catch 語句可以捕獲連接數據庫時產生的異常信息,如下所示:

import mysql.connector
from mysql.connector import errorcode

try:
  cnx = mysql.connector.connect(user='scott',
                                database='employ')
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cnx.close()

使用 C 擴展版本

Connector/Python 官方提供了兩種實現:純 Python 接口和 C 語言版本,可以在配置文件中通過 use_pure 參數指定,8.0.11 版本後默認 False,以前的版本默認 True。如果本地只有一種接口,該參數無效。

import mysql.connector

cnx = mysql.connector.connect(user='scott', password='password',
                              host='127.0.0.1',
                              database='employees',
                              use_pure=False)
cnx.close()
rss_feed