Python:怎样连接 MySQL 数据库及错误处理

Lasted 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()