将Python连接到MySQL的4种方法

459 阅读5分钟

MySQL是最流行的关系型数据库之一。它允许你在表中存储数据,并在这些表之间建立关系。要使用作为数据库服务器运行的MySQL,你将需要编写代码来连接它。

大多数编程语言如Python提供了这方面的支持。事实上,在Python中,你可以采取几种方法,每一种都有自己的优势。

今天的视频

准备好你的MySQL配置

要连接到数据库,你需要以下数值。

  • Host:MySQL服务器的位置,如果你在同一台计算机上运行,则为localhost。
  • 用户:MySQL的用户名。
  • 密码:MySQL的密码。
  • 数据库名称:你想连接的数据库的名称。

在连接到MySQL数据库之前,创建一个新的目录。

mkdir python-mysql

设置一个Python虚拟环境

Python 虚拟环境允许你在一个隔离的环境中安装软件包和运行脚本。当你创建一个虚拟环境时,你就可以在其中安装 Python 的版本和 Python 的依赖。这样,你就可以隔离不同的版本,避免兼容性问题。

使用mysqlclient连接到MySQL

mysqlclient驱动程序是一个到 MySQL 数据库服务器的接口,它提供了 Python 数据库服务器 API。它是用C语言编写的。

在虚拟环境中运行以下命令来安装mysqlclient。

pip install mysqlclient

如果你是在Linux机器上,先安装Python 3和MySQL开发头文件和库。

# Debian / Ubuntusudo apt-get install python3-dev default-libmysqlclient-dev build-essential # Red Hat / CentOSsudo yum install python3-devel mysql-devel

在Windows上,你可以使用二进制轮子文件安装mysqlclient。从Christoph Gohlke的非官方集合下载与你的平台兼容的mysqlclient文件。然后,你可以使用下载的轮子文件和pip来安装mysqlclient,就像这样。

pip install c:\\mysqlclient‑1.3.13‑cp36‑cp36m‑win_amd64.whl

安装完成后,使用下面的连接代码来连接到MySQL数据库。

import MySQLdb connection = MySQLdb.connect(    host="localhost",    user="<mysql_user>",    passwd="<mysql_password>",    db="<database_name>") cursor = connection.cursor()cursor.execute("select database();")db = cursor.fetchone() if db:    print("You're connected to database: ", db)else:    print('Not connected.')

在这个程序中,你已经

  • 导入了mysqlclient。
  • 使用MySQLdb.connect()创建了一个连接对象。
  • 将数据库配置细节传给MySQLdb.connect()。
  • 创建了一个游标对象,与MySQL交互。
  • 使用游标对象来获取连接的MySQL数据库的版本。

记住要用你自己的数据库细节进行切换。

使用mysql-connector-python连接到MySQL

mysql-connector-python是由Oracle支持的官方连接驱动程序。它也是用纯Python编写的。

通过pip安装它以开始使用它。

pip install mysql-connector-python

使用下面的连接代码连接到MySQL。

import mysql.connectorfrom mysql.connector import Error connection = mysql.connector.connect(host="localhost",    user="<mysql_user>",    passwd="<mysql_password>",    db="<database_name>") try:    if connection.is_connected():        cursor = connection.cursor()        cursor.execute("select database();")        db = cursor.fetchone()        print("You're connected to dtabase: ", db)except Error as e:    print("Error while connecting to MySQL", e)finally:    if connection.is_connected():        cursor.close()        connection.close()        print("MySQL connection is closed")

上面的连接代码与mysqclient连接代码做的事情一样。

一旦你创建了连接对象,你就可以创建一个游标,然后你可以用它来执行对数据库的查询。

这个连接程序也使用了try...catch块。来自mysql.connector的Error类可以让你捕捉连接到数据库时产生的异常。这应该可以简化调试和故障排除。

使用PyMySQL连接到MySQL

PyMySQL连接驱动是MySQLdb的替代品。要使用它,你需要运行Python 3.7或更新的版本,你的MySQL服务器应该是5.7,或更新的版本。如果你使用MariaDB,它应该是10.2版本或更高。你可以在PyMySQL Github页面找到这些要求

要安装PyMySQL,请运行以下命令。

pip install PyMySQL

用这个代码用PyMySQL连接到MySQL。

import pymysql connection = pymysql.connect(host="localhost",    user="<mysql_user>",    password="<mysql_password>",    database="<database_name>") try:    cursor = connection.cursor()    cursor.execute("select database();")    db = cursor.fetchone()    print("You're connected to database: ", db)except pymysql.Error as e:    print("Error while connecting to MySQL", e)finally:    cursor.close()    connection.close()    print("MySQL connection is closed")

一旦你建立了连接,并创建了游标对象,你就可以开始进行SQL查询了。

使用aiomysql连接到MySQL

aiomysql连接驱动就像PyMySQL的异步版本。它提供了从asyncio框架到MySQL数据库的访问。

要使用aiomysql,你需要在你的开发环境中安装Python 3.7+和PyMySQL。

运行下面的命令来安装asyncio和aiomysql。

pip install asynciopip install aiomysql

通过aiomysql,你可以使用一个基本的连接对象和使用一个连接池将Python连接到MySQL。

下面是一个例子,显示了如何使用连接对象连接到MySQL数据库。

import asyncioimport aiomysqlloop = asyncio.get_event_loop() async def python_mysql():    connection = await aiomysql.connect(host="localhost",    user="<mysql_user>",    password="<mysql_password>",    database="<database_name>")     cur = await connection.cursor()    await cur.execute("select database();")    db = await cur.fetchone()    print("You're connected to database: ", db)    await cur.close()    connection.close() loop.run_until_complete(python_mysql())

与数据库连接对象不同,连接池允许你重复使用数据库连接。它通过维护一个开放的连接池并在请求时分配这些连接来实现。当客户端请求一个连接时,他们会从池中被分配一个。一旦客户端关闭了连接,该连接就会回到池中。

通过一个池子进行连接的基本代码如下。

import asyncioimport aiomysqlloop = asyncio.get_event_loop()async def python_mysql():    pool = await aiomysql.create_pool(host="localhost",    user="<mysql_user>",    password="<mysql_password>",    database="<database_name>", loop=loop, autocommit=False)     async with pool.acquire() as connection:        cursor = await connection.cursor()        await cur.execute("select database();")		    db = await cur.fetchone()		    print("You're connected to database: ", db)     pool.close()    await pool.wait_closed() loop.run_until_complete(python_mysql())

当你运行这个程序时,它应该打印你所连接的MySQL的版本。

管理你的PostgreSQL数据库

这篇文章向你展示了几种可以将Python应用程序连接到MySQL的方法。这些方法中的每一种都允许你与数据库交互并执行查询。

一旦连接到MySQL数据库,你就可以执行数据查询并进行数据库事务。你可以创建一个Python应用程序,把它挂到MySQL上,然后开始存储数据。