ToB企服应用市场:ToB评测及商务社交产业平台
标题:
4 种 Python 连接 MySQL 数据库的方法
[打印本页]
作者:
干翻全岛蛙蛙
时间:
2024-8-4 03:52
标题:
4 种 Python 连接 MySQL 数据库的方法
用 Python 连接到 MySQL 数据库的方法不是很系统,现实中有几种差别的连接方法,而且不是所有的方法都能与差别的操作系统很好地共同。除此之外,启用SSL也是一个挑战。
本文涵盖了四种方法,你可以用它们来连接你的Python应用程序和MySQL。这些例子将使用PlanetScale,一个用于MySQL的无服务器数据库平台。
本文将涵盖以下连接方法:
mysqlclient
mysql-connector-python
PyMySQL
aiomysql
设置PlanetScale
假如你必要一个免费的数据库来测试你的连接,PlanetScale是一个很好的选择。PlanetScale建立在Vitess之上,为你提供一个熟悉的工作流程分支来测试和部署差别模式。
Vitess建于2010年,用于解决YouTube的扩展题目。从那时起,这个开源项目持续增长,现在资助一些公司,如Slack和Square处置惩罚他们的大规模数据扩展需求。
你可以从下面注册一个账户,获得一个免费的5GB数据库。
https://auth.planetscale.com/sign-up
创建一个数据库
当你进入PlanetScale的仪表板。
在你的组织概览仪表板上点击 “创建新数据库”。
给你的数据库起个名字。
从下拉菜单中选择一个区域。
点击创建数据库。
你的数据库将被创建为一个主要的开发分支。你可以在这里进行模式修改,一旦你准备好了,就可以把它推广到生产中。
获取连接凭据
要生成连接凭据,必须做到以下步调:
在你的数据库概览页面上点击 “连接”。
从 "连接方式 "下拉菜单中选择 “Python”。
将凭据复制到你的Python应用程序文件夹中的.env文件。
为了确保连接的安全性,PlanetScale使用了来自证书颁发机构(CA)的证书,它是险些所有平台上的系统根的一部门。当连接到数据库时,你必须指定你信任的CA证书的路径。注意,这个路径取决于你的平台。这里有一个高出各种操作系统和发行版的常见路径列表。
https://planetscale.com/docs/concepts/secure-connections#ca-root-configuration
假如你从PlanetScale仪表板上复制了证书,你已经完成这一步,由于PlanetScale会主动检测你的操作系统。
假如你使用的是Windows系统,你必要下载根证书,然后用你所使用的驱动程序的精确配置选项指向它们的位置。
用mysqlclient连接到MySQL
mysqlclient包是用于MySQL的最盛行的Python包之一。它包含MySQLdb模块,一个提供Python数据库API的MySQL接口。
起首安装mysqlclient。你可以通过两种方式来完成这件事。
使用来自MySQL官方网站的安装程序,它与你正在运行的操作系统和SQL版本相匹配。
使用 pip 来安装它。
pip install mysqlclient
复制代码
在Linux上,你大概必要在安装mysqlclient之前安装Python3和MySQL开发头文件和库。
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
复制代码
一旦你安装了mysqlclient,你可以使用下面的代码连接到数据库。
import os
import MySQLdb # import the MySQLdb module
from dotenv import load_dotenv
load_dotenv()
# Create the connection object
connection = MySQLdb.connect(
host=os.getenv("HOST"),
user=os.getenv("USERNAME"),
passwd=os.getenv("PASSWORD"),
db=os.getenv("DATABASE"),
ssl_mode="VERIFY_IDENTITY",
ssl={
'ca': os.getenv("SSL_CERT")
}
)
# Create cursor and use it to execute SQL command
cursor = connection.cursor()
cursor.execute("select @@version")
version = cursor.fetchone()
if version:
print('Running version: ', version)
else:
print('Not connected.')
复制代码
注意,你必须安装 python-dotenv 并导入 os 模块以访问.env 文件中的数据库凭据。
Windows用户要注意,从wheel轮子文件中安装的mysqlclient不支持ssl模式。由于你想确保数据库连接是安全的,我们建议使用另一个驱动,比如mysql-connector-python。
这个例子使用连接来获取数据库的SQL版本,然后关闭连接。
别的的连接方法的语法与这个例子险些雷同。这种类似的语法源于 Python 数据库 API 规范 (PEP 249),它鼓励用于访问数据库的 Python 模块之间的同等性。
用MySQL connector连接到MySQL
MySQL connector/Python模块是Oracle支持的官方驱动,用于通过Python连接MySQL。该连接器完全是Python语言,而mysqlclient是用C语言编写的。它也是独立的,意味着它不必要MySQL客户端库或尺度库以外的任何Python模块。
注意,MySQL Connector/Python不支持旧的MySQL服务器认证方法,这意味着4.1之前的MySQL版本不能工作。
起首安装mysql-connector-python模块。建议使用pip来安装它。
pip install mysql-connector-python
复制代码
安装后,使用以下代码连接到MySQL:
import os
from dotenv import load_dotenv
from mysql.connector import Error
import mysql.connector
load_dotenv()
connection = mysql.connector.connect(
host=os.getenv("HOST"),
database=os.getenv("DATABASE"),
user=os.getenv("USERNAME"),
password=os.getenv("PASSWORD"),
ssl_ca=os.getenv("SSL_CERT")
)
try:
if connection.is_connected():
cursor = connection.cursor()
cursor.execute("select @@version ")
version = cursor.fetchone()
if version:
print('Running version: ', version)
else:
print('Not connected.')
except Error as e:
print("Error while connecting to MySQL", e)
finally:
connection.close()
复制代码
用PyMySQL连接到MySQL
PyMySQL包是另一个连接器,你可以用它来连接Python和MySQL。假如你追求速度,这是一个很好的选择,由于它比mysql-connector-python快。
你可以使用 pip 来安装它。
pip install PyMySQL
复制代码
然后,使用以下连接代码。
from dotenv import load_dotenv
import pymysql
import os
load_dotenv()
connection = pymysql.connect(
host=os.getenv("HOST"),
database=os.getenv("DATABASE"),
user=os.getenv("USERNAME"),
password=os.getenv("PASSWORD"),
ssl_ca=os.getenv("SSL_CERT")
)
cursor = connection.cursor()
cursor.execute("select @@version ")
version = cursor.fetchone()
if version:
print('Running version: ', version)
else:
print('Not connected.')
connection.close()
复制代码
用aiomysql连接到MySQL
aiomysql库用于从asyncio框架访问MySQL数据库。除了是异步的特性之外,连接代码与PyMySQL相似。注意,使用aiomysql必要Python 3.7以上版本和PyMySQL。
要使用aiomysql,起首要用安装异步模块。
pip install asyncio
复制代码
然后,用以下方法安装aiomysql。
pip install aiomysql
复制代码
然后你可以使用以下代码连接到MySQL。
import os
import asyncio
import aiomysql
import ssl
from dotenv import load_dotenv
load_dotenv()
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ctx.load_verify_locations(cafile=os.getenv("SSL_CERT"))
loop = asyncio.get_event_loop()
async def connect_db():
connection = await aiomysql.connect(
host=os.getenv("HOST"),
port=3306,
user=os.getenv("USERNAME"),
password=os.getenv("PASSWORD"),
db=os.getenv("DATABASE"),
loop=loop,
ssl=ctx
)
cursor = await connection.cursor()
await cursor.execute("select @@version")
version = await cursor.fetchall()
print('Running version: ', version)
await cursor.close()
connection.close()
loop.run_until_complete(connect_db())
复制代码
总结
在数据库中保存数据是应用程序的共同特性之一。像Python一样,大多数编程语言支持与差别数据库的连接和交互。
本教程探讨了Python与MySQL的连接。我们分享了可以使用的四种差别的常用连接方法,并在PlanetScale数据库上使用SSL对它们进行了测试,这是一个关键的步调,由于它可以防止中心人攻击。我们回顾了每个连接方式的连接器是如何工作的,并展示了运行它所需的代码。现在你已经完成了这个实践概述,你已经准备好将MySQL数据库连接到Python应用程序中了。
点击下方安全链接前去获取
CSDN大礼包:《Python入门&进阶学习资源包》免费分享
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4