在 Python 中连接到 MySQL 数据库

Muhammad Maisam Abbas 2024年2月16日
  1. 使用 Python 的默认 MySQL 连接器连接到 MySQL 数据库
  2. 使用 Python 中的 pymysql 库连接到 MySQL 数据库
  3. 使用 Python 中的 mysqlclient 库连接到 MySQL 数据库
在 Python 中连接到 MySQL 数据库

本教程将讨论和演示如何在 Python 中连接到 MySQL 数据库。

使用 Python 的默认 MySQL 连接器连接到 MySQL 数据库

Oracle 为 Python 提供了一个连接器来连接其 MySQL 数据库。这是在 Python 中连接到 MySQL 数据库的最简单方法。

我们可以从官网手动下载安装连接器,也可以通过命令提示符安装。

下面给出了为 Python 安装 MySQL 连接器的命令。

!pip install mysql-connector-python

安装完成后,我们需要将这个库导入到我们的代码文件中。该过程显示在以下行中。

import mysql.connector as connector

我们已经导入了 mysql.connector 库并为其赋予别名 connector。我们现在可以使用 connector 别名来引用这个库。

导入库后,我们需要使用 connect() 方法创建连接。该方法将 userpasswordhostdatabase 作为输入参数。

  • user 参数指定当前登录用户的名称,
  • password 参数指定该特定用户的密码,
  • host 参数指定托管数据库的服务器地址,并且
  • database 参数指定我们要连接的数据库名称。

我们需要将这行代码包装在 try/except 块中以进行异常处理。异常处理是任何编程语言中数据库编程的关键部分。

下面的代码片段向我们展示了如何在 Python 中使用异常处理创建连接。

try:
    connection = connector.connect(
        user="root", password="12345", host="127.0.0.1", database="sakila"
    )
except connector.Error as e:
    print("Error: Could not make connection to the MySQL database")
    print(e)

我们使用 connector.Error 在连接数据库时报告运行时的任何错误。我们需要一种方法来对数据库执行 CRUD(创建、读取、更新、删除)操作。

这是通过一个叫做游标的东西来完成的。

游标充当用于对数据库及其表执行操作的指针。我们需要在连接对象中执行 cursor() 来创建游标。

这显示在以下代码片段中。

cursor = connection.cursor()

一旦创建了游标,我们就可以执行我们的查询。我们必须使用 cursor 对象内的 execute() 函数来执行特定查询。

使用游标执行查询的方法如以下代码片段所示。

query = "show databases"
cursor.execute(query)

这不会显示任何输出,因为查询的结果存储在 cursor 中。我们必须遍历 cursor 并分别显示每个值以显示结果。

下面的代码片段向我们展示了如何做到这一点。

for i in cursor:
    print(i)

输出:

('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)

执行查询后,我们需要关闭光标并连接以下代码。

cursor.close()
connection.close()

虽然用 Python 连接 MySQL 数据库是最简单的方法,但它也有缺陷。Oracle 提供的标准 MySQL 连接器带有一些细微的错误,因此不鼓励这种方法。

使用 Python 中的 pymysql 库连接到 MySQL 数据库

除了使用 Oracle 的默认 python MySQL 连接器之外,我们还可以使用 pymysql library 连接到 MySQL 数据库。这也很简单。

pymysql 库中也没有兼容性或互操作性问题,因为它是用纯 Python 编写的。

下面给出了安装 pymysql 库的命令。

!pip install pymysql

安装后,我们需要按照上一节中描述的相同步骤进行操作。甚至 pymysql 库中的方法名称也与默认 Python 连接器中的相同。

下面的代码示例向我们展示了如何连接到 MySQL 数据库并使用 Python 中的 pymysql 库执行查询。

import pymysql

connection = pymysql.connect(
    host="localhost", user="root", password="12345", db="sakila"
)

try:
    cursor = connection.cursor()
    query = "show databases"
    cursor.execute(query)
    for i in cursor:
        print(i)
except connector.Error as e:
    print("Error: Could not make connection to the MySQL database")
    print(e)
cursor.close()
connection.close()

输出:

('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)

输出与上一节相同,因为我们连接到同一个数据库并执行了相同的查询。这里唯一明显的区别是导入库的名称。

使用 Python 中的 mysqlclient 库连接到 MySQL 数据库

在 Python 中连接到 MySQL 数据库的另一种好方法是 mysqlclient。要安装这个库,我们需要执行以下命令。

!pip install mysqlclient

安装后,我们需要应用第一节中提到的相同步骤。与前面方法的唯一区别是导入的库名称与安装期间使用的名称不同。

我们需要在我们的代码中导入这个 mysqlclient 来导入 MySQLdb 库,如下面的编码示例所示。

import MySQLdb

connection = MySQLdb.connect(
    host="localhost", user="root", password="12345", db="sakila"
)

try:
    cursor = connection.cursor()
    query = "show databases"
    cursor.execute(query)
    for i in cursor:
        print(i)
except connector.Error as e:
    print("Error: Could not make connection to the MySQL database")
    print(e)
cursor.close()
connection.close()

输出:

('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)

输出仍然与前两节相同,因为我们连接到类似的数据库并执行相同的查询。这里唯一的区别在于导入库的名称。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Python Database