作者选择了 技术教育基金作为 写给捐款计划的一部分接受捐款。
介绍
MariaDB是流行的MySQL关系数据库管理系统(DBMS)的开源版本,具有访问和管理数据的SQL接口。它非常可靠和易于管理,这是DBMS能够服务现代应用的必不可少的品质。
在本教程中,您将使用MySQL连接器将Python应用程序连接到数据库服务器。本模块允许您从应用程序内部对数据库服务器进行查询。
前提条件
在您开始本指南之前,您将需要以下内容:
- 一个 Ubuntu 18.04 服务器,至少有 1 GB 的 RAM 设置,通过遵循 Ubuntu 18.04 初始服务器设置指南,包括一个 sudo 非根用户和防火墙。
- Python 安装在您的服务器上。 遵循我们的 如何安装 Python 和设置编程环境 教程。
- MariaDB 安装在您的服务器上。 遵循我们的 如何安装 MariaDB 教程。 请确保记住您的授权凭证(用户名和密码),因为您将在教程中稍后使用。
步骤1 - 准备和安装
在此步骤中,您将在 MariaDB 中创建数据库和表。
首先,打开终端,并使用以下命令从终端输入MariaDB壳:
1sudo mysql
在本教程中,你将写Python连接到一个名为工作场所
的示例员工数据库和一个名为员工
的表。
开始创建工作场所
数据库:
1CREATE DATABASE workplace;
接下来,告诉 MariaDB 将工作场所
作为当前数据库:
1USE workplace;
您将收到以下输出,这意味着您执行的每个查询将在工作场所
数据库中生效:
1[secondary_label Output]
2Database changed
接下来,创建员工
表:
1CREATE TABLE employees (first_name CHAR(35), last_name CHAR(35));
在表格中,参数first_name
和last_name
被指定为最大长度为35
的字符串(CHAR
).
接下来,输出 MariaDB 壳:
1exit;
回到终端,将 MariaDB 授权凭据导出为环境变量:
1export username="username"
2export password="password"
此技术允许您避免在脚本中添加简单文本的凭证。
您已经为该项目设置了环境,接下来,您将开始编写脚本并连接到您的数据库。
步骤 2 – 连接到您的数据库
在此步骤中,您将安装 MySQL 连接器并设置数据库。
在您的终端中,运行以下命令来安装连接器:
1pip3 install mysql-connector-python
「pip」是 Python 的标准包管理器,而「mysql-connector-python」是 Python 数据库连接器模块。
成功安装连接器后,创建并打开新的 Python 文件:
1nano database.py
在打开的文件中,使用导入
关键字导入 the os
module和 mysql.connector
模块:
1[label database.py]
2import os
3import mysql.connector as database
这里的as
关键字意味着在代码的其余部分中,mysql.connector
将被称为数据库
。
接下来,将您导出的授权凭证作为Python变量进行初始化:
1[label database.py]
2. . .
3username = os.environ.get("username")
4password = os.environ.get("password")
使用数据库提供的connect()
方法来跟踪并建立数据库连接,该方法采用一系列命名的参数来指定您的客户端凭证:
1[label database.py]
2. . .
3connection = database.connect(
4 user=username,
5 password=password,
6 host=localhost,
7 database="workplace")
您声明一个名为连接
的变量,该变量将调用到database.connect()
方法中。在该方法中,您将值分配给用户
,密码
,主机
和数据库
参数。对于用户和密码,您将引用您的MariaDB授权凭据。如果您在同一系统上运行数据库,主机将默认为本地主机
。
最后,在连接上调用 cursor()
方法以获取数据库路由器:
1[label database.py]
2. . .
3cursor = connection.cursor()
_cursor 是一个数据库对象,从数据集中获取并同时更新数据。
让你的文件打开下一步。
现在你可以用你的身份证连接到MariaDB;接下来,你会使用你的脚本添加数据库的条目。
步骤三:添加数据
在数据库路由器上使用执行()
方法,您将在此步骤中添加数据库的条目。
定义一个函数 add_data()
以接受员工的第一名和最后名称作为参数. 在函数中,创建试用除区块。
1[label database.py]
2. . .
3def add_data(first_name, last_name):
4 try:
5 statement = "INSERT INTO employees (first_name,last_name) VALUES (%s, %s)"
6 data = (first_name, last_name)
7 cursor.execute(statement, data)
8 connection.commit()
9 print("Successfully added entry to database")
10 except database.Error as e:
11 print(f"Error adding entry to database: {e}")
您使用试用
和除外
块来捕捉和处理扰乱程序执行的正常流程的例外(事件或错误)。
在试用
块中,您将陈述
声明为包含您的INSERT
SQL 陈述的变量,该陈述告诉 MariaDB 将first_name
和last_name
列添加到列中。
代码语法接受数据作为参数,从而减少 SQL 注入的可能性. 具有参数的准备陈述确保只有给定的参数才能按预期安全传输到数据库。
接下来,您将数据
声明为 tuple 以从add_data
函数中获得的参数。 通过通过 SQL 语句和数据来运行execute()
对象。
最后,如果成功,您会打印成功消息。
在例外
块中,只有在有例外时才执行,您将database.Error
声明为e
。这个变量将包含有关例外类型或脚本破坏时发生的事件的信息。
将数据添加到数据库后,您将下一步想要检索它,下一步将带您通过检索数据的过程。
步骤4:恢复数据
在此步骤中,您将在 Python 代码中编写一个 SQL 查询,从您的数据库中获取数据。
使用数据库路由器上相同的 execute()
方法,您可以检索数据库条目。
定义一个函数 get_data()
以接受员工的姓名作为一个参数,您将使用 execute()
方法与 SQL 查询 SELECT
调用,以查找准确的行:
1[label database.py]
2. . .
3def get_data(last_name):
4 try:
5 statement = "SELECT first_name, last_name FROM employees WHERE last_name=%s"
6 data = (last_name,)
7 cursor.execute(statement, data)
8 for (first_name, last_name) in cursor:
9 print(f"Successfully retrieved {first_name}, {last_name}")
10 except database.Error as e:
11 print(f"Error retrieving entry from database: {e}")
在试用
块中,您将陈述
宣布为包含您的SELECT
SQL陈述的变量,该陈述告诉MariaDB在匹配特定姓名时从员工
表中获取first_name
和last_name
列。
再次,您使用参数来减少 SQL 注射的机会。
微笑的最后一个函数,你声明数据
作为一个tuple与last_name
随后一个字节。 继续运行execute()
方法在cursor
对象通过 SQL 陈述和数据。 使用一个 for
循环,你重复通过返回的元素在指示器,然后打印如果有任何成功的匹配。
在除外
块中,只有在存在例外时才能执行,请将database.Error
声明为e
。这个变量将包含有关发生的例外类型的信息。
在最后一步中,您将通过调用定义的函数来执行脚本。
步骤5 - 运行你的脚本
在此步骤中,您将写下最终的代码,使您的脚本可执行,并从您的终端运行。
用样本数据(字符串)调用add_data()
和get_data()
来验证您的代码是否按预期工作。
如果您想添加多个条目,您可以拨打add_data()
以添加您选择的其他样本名称。
完成数据库工作后,请确保关闭连接以避免浪费资源:
connection.close()
:
1[label database.py]
2import os
3import mysql.connector as database
4
5username = os.environ.get("username")
6password = os.environ.get("password")
7
8connection = database.connect(
9 user=username,
10 password=password,
11 host=localhost,
12 database="workplace")
13
14cursor = connection.cursor()
15
16def add_data(first_name, last_name):
17 try:
18 statement = "INSERT INTO employees (first_name,last_name) VALUES (%s, %s)"
19 data = (first_name, last_name)
20 cursor.execute(statement, data)
21 cursor.commit()
22 print("Successfully added entry to database")
23 except database.Error as e:
24 print(f"Error adding entry to database: {e}")
25
26def get_data(last_name):
27 try:
28 statement = "SELECT first_name, last_name FROM employees WHERE last_name=%s"
29 data = (last_name,)
30 cursor.execute(statement, data)
31 for (first_name, last_name) in cursor:
32 print(f"Successfully retrieved {first_name}, {last_name}")
33 except database.Error as e:
34 print(f"Error retrieving entry from database: {e}")
35
36add_data("Kofi", "Doe")
37get_data("Doe")
38
39connection.close()
确保您正确输入了代码,以避免错误。
在相同的目录中,你创建了 database.py
文件,运行你的脚本:
1python3 ./database.py
您将获得以下输出:
1[secondary_label Output]
2Successfully added entry to database
3Successfully retrieved Kofi, Doe
最后,返回 MariaDB 以确认您已成功添加了您的条目。
从您的终端打开 MariaDB 提示:
1sudo mysql
接下来,告诉 MariaDB 切换到并使用工作场所
数据库:
1USE workplace;
收到成功消息数据库更改
后,继续查询员工
表中的所有条目:
1SELECT * FROM employees;
你的输出将是相似的如下:
1[secondary_label Output]
2+------------+-----------+
3| first_name | last_name |
4+------------+-----------+
5| Kofi | Doe |
6+------------+-----------+
71 row in set (0.00 sec)
把所有这些都放在一起,你已经编写了一个脚本,它会从MariaDB数据库中保存和检索信息。
您开始通过导入所需的库。 您使用mysql-connector
连接到数据库,并使用os
从环境中获取授权凭据。 在数据库连接上,您获取了引导器来执行查询,并将代码结构化为add_data
和get_data
函数。 使用您的函数,您将数据插入并从数据库中获取数据。
如果您想要实施删除,您可以用必要的声明、陈述和呼叫来构建类似的函数。
结论
您已成功地使用Python脚本在Ubuntu 18.04上建立了与MariaDB的数据库连接,从这里开始,您可以在您需要在数据库中存储数据的任何Python项目中使用类似的代码。
有关如何使用 Python 完成项目的更多信息,请参阅其他社区教程在 Python。