在开发中要如何将Python程序连接到MariaDB?将Python程序连接到 MariaDB方法分享!

2021-09-18 17:47:06 浏览数 (5420)

您可以使用流行的编程语言 Python 来管理存储在 MariaDB 平台中的数据,包括 MariaDB Server、MariaDB MaxScale 和 MariaDB SkySQL。以下是有关从 Python 连接到 MariaDB 平台以检索、更新和插入信息所需了解的所有信息。

准备和安装

您将需要访问 MariaDB 服务器。我们推荐以下两种方法之一:

1. 在您自己的硬件上下载 MariaDB 服务器。有关文档中的分步说明,请参阅 部署指南

2. 使用 MariaDB SkySQL 部署 MariaDB 平台,其中包括 MariaDB Enterprise Server。请参阅我们的文档以在几分钟内启动数据库服务。

如果您想尝试 Python 与 MariaDB 的集成,但没有可使用的数据库,则可以使用流行的员工示例数据库

MariaDB 通过 MariaDB Connector/Python 提供 Python 支持,可通过 Python Package Index 获得。要安装,请使用 PIP:

Shell:

$ pip3 install mariadb

连接到 MariaDB 服务器

1. 要使用 MariaDB Connector/Python 连接到 MariaDB 服务器,您必须先导入它,就像导入任何其他模块一样: import mariadb

2.接下来,使用connect()函数建立数据库连接。该函数采用一系列命名参数来指定您的客户端凭据,例如用户名、主机、密码。如果您在 SkySQL 上使用数据库实例,此信息将在您的数据库实例的服务详细信息页面中提供。

该连接为您提供了一个界面,用于配置您的应用程序与 MariaDB 服务器的连接。

3. 最后,调用cursor()连接上的方法来检索游标。

游标为您提供了与服务器交互的界面,例如运行 SQL 查询和管理事务。

Python:

# Module Imports
import mariadb
import sys 
# Connect to MariaDB Platform
try: conn = mariadb.connect( 
    user="db_user", 
    password="db_user_passwd", 
    host="192.0.2.1", 
    port=3306, 
    database="employees" 
) except mariadb.Error as e: 
    print(f"Error connecting to MariaDB Platform: {e}") 
    sys.exit(1) 
# Get Cursor 
cur = conn.cursor()

检索数据

有了初始代码后,您就可以开始处理数据了。您应该做的第一件事是尝试从数据库中检索信息。以下是针对员工数据库的查询代码:

Python:

cur.execute(
    "SELECT first_name,last_name FROM employees WHERE first_name=?", 
    (some_name,))

MariaDB 连接器/Python 使用准备好的语句,清理元组中的值并将其插入问号 (?) 的位置。在处理用户提供的信息时,这比通过 f 字符串或格式说明符插入更安全。

查询结果存储在游标对象的列表中。要查看结果,您可以在光标上循环。

Python:

# Print Result-set
for (first_name, last_name) in cur: 
    print(f"First Name: {first_name}, Last Name: {last_name}")

每一行作为包含SELECT语句中列的元组从游标传递。

添加数据

execute()对INSERT语句使用相同的方法,您可以向表中添加行。

Python:

cursor.execute(
    "INSERT INTO employees (first_name,last_name) VALUES (?, ?)", 
    (first_name, last_name))

默认情况下,MariaDB Connector/Python 启用自动提交。如果您想手动管理您的事务,仅在您准备好时提交,您可以通过将autocommit连接上的属性设置为 False来禁用它。

Python:

# Disable Auto-Commit
conn.autocommit = False

完成此操作后,您可以使用commit()和rollback()方法提交和回滚事务。MariaDB Server 允许您在使用 InnoDB 存储引擎时在同一个表上运行多个并发事务而无需锁定它。

在插入行时,您可能希望在生成最后插入的行时找到它的主键,就像自动递增的值一样。您可以使用lastrowid()光标上的方法检索它。

更新和删除行与插入行类似。唯一的区别在于所使用的查询。

捕捉异常

对于您的任何 SQL 操作(查询、更新、删除或插入记录),您都应该尝试捕获错误,以便您可以验证您的操作是否按预期执行,并且您在出现任何问题时都知道。要捕获错误,请使用 Error 类:

Python:

try: 
    cursor.execute("some MariaDB query"))
except mariadb.Error as e: 
    print(f"Error: {e}")

如果try上述代码的子句中的查询失败,MariaDB Server 会返回一个 SQL 异常,该异常在except 中被捕获并打印到 stdout。当您使用数据库时,这种捕获异常的编程最佳实践尤其重要,因为您需要确保信息的完整性。

完成对数据库的使用后,请确保关闭此连接,以避免将未使用的连接保持打开状态,从而浪费资源。您可以使用以下close()方法关闭连接:

Python:

# Close Connection
conn.close()

如果您使用 SkySQL 进行试验,您可能需要删除您的数据库服务以停止产生费用。

完整的脚本

这就是将 Python 代码连接到 MariaDB 数据库是多么简单和直接。以下是完整得脚本的代码:

Python:

#!/usr/bin/python 
import mariadb 
conn = mariadb.connect( 
    user="db_user", 
    password="db_user_passwd", 
    host="localhost", 
    database="employees"
) 
cur = conn.cursor() 
#retrieving information 
some_name = "Georgi" 
cur.execute("SELECT first_name,last_name FROM employees WHERE first_name=?", (some_name,))
for first_name, last_name in cur: 
    print(f"First name: {first_name}, Last name: {last_name}") 
#insert information
try: 
    cur.execute("INSERT INTO employees (first_name,last_name) VALUES (?, ?)", ("Maria","DB"))
except mariadb.Error as e: 
    print(f"Error: {e}") 
conn.commit() 
print(f"Last Inserted ID: {cur.lastrowid}") 
conn.close()