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上,然后开始存储数据。