当前位置: 首页 > 科技观察

Python连接MySQL数据库的四种方法

时间:2023-03-13 00:22:30 科技观察

使用Python连接MySQL数据库的方法不是很系统,实际上有几种不同的连接方法,并不是所有的方法都适用于不同的操作系统。除此之外,启用SSL也是一个挑战。本文介绍四种可用于将Python应用程序连接到MySQL的方法。这些示例将使用PlanetScale,这是一个用于MySQL的无服务器数据库平台。本文将介绍以下连接方法:mysqlclientmysql-connector-pythonPyMySQLaiomysql设置PlanetScale如果您需要一个免费的数据库来测试您的连接,PlanetScale是一个不错的选择。PlanetScale建立在Vitess之上,为您提供了一个熟悉的工作流分支来测试和部署不同的模式。Vitess创建于2010年,旨在解决YouTube的扩展问题。从那时起,开源项目不断发展壮大,现在帮助Slack和Square等公司处理其海量数据扩展需求。您可以在下面注册一个帐户并获得一个免费的5GB数据库。当您进入PlanetScale仪表板时,https://auth.planetscale.com/sign-up会创建一个数据库。在您的组织概览仪表板上单击创建新数据库。给你的数据库一个名字。从下拉菜单中选择一个区域。单击创建数据库。您的数据库将创建为主要开发分支。您可以在此处进行模式修改,并在准备就绪后将其投入生产。获取连接凭证要生成连接凭证,必须完成以下步骤:在您的数据库概览页面上单击“连接”。从“连接”下拉菜单中选择“Python”。将凭据复制到Python应用程序文件夹中的.env文件。为确保连接的安全性,PlanetScale使用来自证书颁发机构(CA)的证书,该证书是几乎所有平台上系统根目录的一部分。连接到数据库时,您必须指定您信任的CA证书的路径。请注意,此路径取决于您的平台。以下是各种操作系统和发行版的通用路径列表。https://img.ydisp.cn/news/20220920/prcxplx0of5data-id="hdf2c2dd-OBeoFK35"id="hdf2c2dd-OBeoFK35">用mysqlclient连接MySQLmysqlclient包是MySQL最受欢迎的Python包之一.它包含MySQLdb模块,这是一个提供Python数据库API的MySQL接口。首先安装mysqlclient。您可以通过两种方式执行此操作。使用来自官方MySQL网站的安装程序,该安装程序与您正在运行的操作系统和SQL版本相匹配。使用pip安装它。pipinstallmysqlclient在Linux上,您可能需要在安装mysqlclient之前安装Python3和MySQL开发头文件和库。sudoapt-getinstallpython3-devdefault-libmysqlclient-devbuild-essential安装mysqlclient后,您可以使用下面的代码连接到数据库。importosimportMySQLdb#importtheMySQLdbmodulefromdotenvimportload_dotenvload_dotenv()#创建连接对象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")})#创建游标并用它来执行SQLcommandcursor=connection.cursor()cursor.execute("select@@version")version=cursor.fetchone()ifversion:print('Runningversion:',version)else:print('Notconnected.')注意,您必须安装python-dotenv并导入os模块才能访问.env文件中的数据库凭据。Windows用户请注意,从wheel文件安装的mysqlclient不支持ssl模式。由于要确保数据库连接安全,我们建议使用其他驱动程序,例如mysql-connector-python。此示例使用连接获取数据库的SQL版本,然后关闭连接。其余连接方法的语法与此示例几乎相同。这种类似的语法源于Python数据库API规范(PEP249),它鼓励用于访问数据库的Python模块之间的一致性。使用MySQLconnector连接MySQLMySQLconnector/Python模块是Oracle官方支持的通过Python连接MySQL的驱动。连接器完全是Python,而mysqlclient是用C编写的。它也是独立的,这意味着它不需要MySQL客户端库或标准库以外的任何Python模块。请注意,MySQLConnector/Python不支持旧的MySQL服务器身份验证方法,这意味着4.1之前的MySQL版本将无法使用。首先安装mysql-connector-python模块。推荐使用pip安装。pipinstallmysql-connector-python安装后,使用以下代码连接到MySQL:"),database=os.getenv("DATABASE"),user=os.getenv("USERNAME"),password=os.getenv("PASSWORD"),ssl_ca=os.getenv("SSL_CERT"))尝试:如果联系。is_connected():cursor=connection.cursor()cursor.execute("select@@version")version=cursor.fetchone()ifversion:print('Runningversion:',version)else:print('未连接。')exceptErrorase:print("ErrorwhileconnectingtoMySQL",e)finally:connection.close()使用PyMySQL连接到MySQLPyMySQL包是另一个可用于连接Python和MySQL的连接器。如果您追求速度,这是一个不错的选择,因为它比mysql-connector-python更快。您可以使用pip来安装它。pipinstallPyMySQL然后,使用以下连接代码。从dotenv导入load_dotenvimportpymysqlimportosload_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()ifversion:print('Runningversion:',version)else:print('Notconnected.')connection.close()ConnecttoMySQLwithaiomysqlaiomysql库用于从asyncio框架访问MySQL数据库。连接代码类似于PyMySQL,只是它本质上是异步的。请注意,使用aiomysql需要Python3.7或更高版本和PyMySQL。要使用aiomysql,您必须先安装async模块。pipinstallasyncio然后,使用以下方法安装aiomysql。pipinstallaiomysql然后就可以使用下面的代码连接MySQL了。importosimportasyncioimportaiomysqlimportsslfromdotenvimportload_dotenvload_dotenv()ctx=ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)ctx.load_verify_locations(cafile=os.getenv("SSL_CERT"))loop=asyncio.get_event_loop()nectn_db(con)等待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=awaitconnection.cursor()awaitcursor.execute("select@@version")version=awaitcursor.fetchall()print('运行版本:',version)awaitcursor.close()connection.close()loop.run_until_complete(connect_db())总结在数据库中保存数据是应用程序的常见功能之一。和Python一样,大多数编程语言都支持与不同数据库的连接和交互。本教程探索将Python连接到MySQL。我们分享了四种不同的常用连接方法,可以使用SSL在PlanetScale数据库上测试它们,这是防止中间人攻击的关键步骤。我们回顾了每种连接方法的连接器是如何工作的,并展示了运行它所需的代码。现在您已经完成了这个实践概述,您已经准备好将您的MySQL数据库连接到您的Python应用程序。