您可以使用流行的编程语言 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()