Python Mysql 简明教程
Python & MySQL - Overview
Python 数据库接口的 Python 标准是 Python DB-API。大多数 Python 数据库接口都遵守此标准。
您可以为您的应用程序选择合适的数据库。Python Database API 支持范围广泛的数据库服务器,例如−
-
GadFly
-
mSQL
-
MySQL
-
PostgreSQL
-
Microsoft SQL Server 2000
-
Informix
-
Interbase
-
Oracle
-
Sybase
以下是可用的 Python 数据库接口列表: Python Database Interfaces and APIs 。您必须为每个要访问的数据库下载一个单独的 DB API 模块。例如,如果您需要访问 Oracle 数据库和 MySQL 数据库,则必须下载 Oracle 和 MySQL 数据库模块。
DB API 尽力使用 Python 结构和语法为使用数据库的工作提供一个最小标准。此 API 包括以下内容 −
-
Importing the API module.
-
获取与数据库的连接。
-
发出 SQL 语句和存储过程。
-
Closing the connection
Python & MySQL - Environment Setup
Python 可用于各种平台,包括 Linux 和 Mac OS X。让我们了解如何设置我们的 Python 环境。
Local Environment Setup
打开一个终端窗口并输入“python”以找出它是否已经安装,以及安装的是哪个版本。
-
Unix(Solaris、Linux、FreeBSD、AIX、HP/UX、SunOS、IRIX 等)
-
Win 9x/NT/2000
-
Macintosh (Intel, PPC, 68K)
-
OS/2
-
DOS (multiple versions)
-
PalmOS
-
Nokia mobile phones
-
Windows CE
-
Acorn/RISC OS
-
BeOS
-
Amiga
-
VMS/OpenVMS
-
QNX
-
VxWorks
-
Psion
-
Python 也已移植到 Java 和 .NET 虚拟机
Getting Python
最新的源代码、二进制文件、文档、新闻等信息可在 Python 官方网站 https://www.python.org/ 上获取。
你可以从 https://www.python.org/doc/ 下载 Python 文档。文档提供 HTML、PDF 和 PostScript 格式。
Installing Python
Python 发行版可用于各种平台。你只需下载适用于你的平台的二进制代码并安装 Python。
如果你的平台没有二进制代码,你需要 C 编译器来手动编译源代码。编译源代码在安装中所需特性的选择方面提供了更大的灵活性。
以下是对在各种平台上安装 Python 的快速概述 −
Unix and Linux Installation
以下是在 Unix/Linux 计算机上安装 Python 的简单步骤。
-
打开网络浏览器,并转到 https://www.python.org/downloads/ 。
-
按照链接下载适用于 Unix/Linux 的压缩源代码。
-
Download and extract files.
-
如果要自定义一些选项,请编辑 Modules/Setup 文件。
-
run ./configure script
-
make
-
make install
这会在标准位置 /usr/local/bin 中安装 Python,并在 /usr/local/lib/pythonXX 中安装其库,其中 XX 是 Python 的版本。
Windows Installation
以下是如何在 Windows 机器上安装 Python:
-
打开网络浏览器,并转到 https://www.python.org/downloads/ 。
-
按照链接获取 Windows 安装程序 python-XYZ.msi 文件,其中 XYZ 是您需要安装的版本。
-
要使用此安装程序 python-XYZ.msi,Windows 系统必须支持 Microsoft Installer 2.0。将安装程序文件保存到您的本地机器,然后运行它以了解您的机器是否支持 MSI。
-
运行下载的文件。这会打开 Python 安装向导,它非常易于使用。只需接受默认设置,等待安装完成,即可。
Macintosh Installation
最近的 Mac 预装了 Python,但可能已过期了好几年。请参阅 https://www.python.org/download/mac/ 了解有关获取当前版本以及额外工具以支持 Mac 开发的说明。对于在 Mac OS X 10.3(2003 年发布)之前的旧版 Mac OS,MacPython 是可用的。
Jack Jansen 维护它,你可以在他的网站上充分享受全部的文件说明 − 链接:https://www.cwi.nl/ jack/macpython.html[https://www.cwi.nl/ jack/macpython.html]。你能找到有关 Mac 操作系统安装的完整安装详细信息。
Setting up PATH
程序和其他可执行文件可以位于许多目录中,因此操作系统会提供一个搜索路径,其中列出了操作系统搜索可执行文件的目录。
路径存储在环境变量中,该变量是由操作系统维护的一个已命名字符串。此变量包含可供命令 shell 和其他程序使用的信息。
path 变量在 Unix 中被命名为 PATH,在 Windows 中被命名为 Path(Unix 区分大小写;Windows 不区分大小写)。
在 Mac OS 中,安装程序会处理路径详细信息。要从任何特定目录调用 Python 解释器,您必须将 Python 目录添加到您的路径中。
Setting path at Unix/Linux
要在 Unix 中为特定会话将 Python 目录添加到路径中 −
-
In the csh shell - 键入 setenv PATH "$PATH:/usr/local/bin/python" 并按回车。
-
In the bash shell (Linux) - 键入 export PATH="$PATH:/usr/local/bin/python" 并按回车。
-
In the sh or ksh shell - 键入 PATH="$PATH:/usr/local/bin/python" 并按回车。
-
Note - /usr/local/bin/python是Python目录的路径
Setting path at Windows
要在Windows特定会话的路径中添加Python目录:
At the command prompt - 键入 path %path%;C:\Python 并按回车。
Note - C:\Python是Python目录的路径
Install MySQL Database
当然,您将需要最重要的实际运行数据库,其中包含您可以查询和修改的表。
-
MySQL DB: MySQL 是一个开源数据库。你可以从 MySQL Official Site 下载它。我们建议下载完整的 Windows 安装。另外,下载并安装 MySQL Administrator 和 MySQL Query Browser. 。这些基于 GUI 的工具将使你的开发变得更容易。最后,在一个便捷的目录中下载并解压 MySQL Connector/J (MySQL JDBC 驱动程序)。为了本教程的目的,我们将假设你已经将驱动程序安装在 C:\Program Files\MySQL\mysql-connector-java-5.1.8 中。相应地,将 CLASSPATH 变量设置为 C:\Program Files\MySQL\mysql-connector-java-5.1.8\mysql-connector-java-5.1.8-bin.jar。你的驱动程序版本可能会根据你的安装而有所不同。
Set Database Credential
当我们安装 MySQL 数据库时,它的管理员 ID 设置为 root ,并提供设置密码的选项。
使用 root ID 和密码,您可以创建另一个用户 ID 和密码,也可以为您的 JDBC 应用程序使用 root ID 和密码。
有各种数据库操作,例如数据库创建和删除,这需要管理员 ID 和密码。
对于 JDBC 教程的其余部分,我们将使用 MySQL 数据库, guest 为 ID, guest123 为密码。
如果您没有足够权限创建新用户,那么您可以请求数据库管理员 (DBA) 为您创建用户 ID 和密码。
Step 1
打开 Command Prompt 并更改到安装目录,如下所示 −
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
Note: mysqld.exe 的路径可能会根据 MySQL 在你的系统上的安装位置而有所不同。你还可以查看有关如何启动和停止你的数据库服务器的文件说明。
Step 2
如果数据库服务器尚未运行,请执行以下命令以下启动数据库服务器。
C:\Program Files\MySQL\bin>mysqld
C:\Program Files\MySQL\bin>
Step 3
通过执行以下命令创建 TUTORIALSPOINT 数据库 −
C:\Program Files\MySQL\bin> mysqladmin create TUTORIALSPOINT -u guest -p
Enter password: ********
C:\Program Files\MySQL\bin>
Step 1
打开 Command Prompt 并更改到安装目录,如下所示 −
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
Step 3
创建表 Employees 如下所示 −
mysql> use TUTORIALSPOINT;
mysql> create table Employees
-> (
-> id int not null,
-> age int not null,
-> first varchar (255),
-> last varchar (255)
-> );
Query OK, 0 rows affected (0.08 sec)
mysql>
Create Data Records
最后,在 Employee 表中创建一些记录,如下所示 −
mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)
mysql>
要全面了解 MySQL 数据库,请学习 MySQL Tutorial 。
How do I Install MySQLdb?
在继续之前,请确保你已在你的机器上安装 MySQLdb。只需在你的 Python 脚本中键入以下内容并执行它 −
#!/usr/bin/python
import MySQLdb
如果它产生了以下结果,则表示 MySQLdb 模块未安装 −
Traceback (most recent call last):
File "test.py", line 3, in <module>
import MySQLdb
ImportError: No module named MySQLdb
要安装 MySQLdb 模块,请使用以下命令 −
For Ubuntu, use the following command -
$ sudo apt-get install python-pip python-dev libmysqlclient-dev
For Fedora, use the following command -
$ sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc
For Python command prompt, use the following command -
pip install mysqlclient
Note − 确保你有根特权来安装上述模块。
你现在可以开始试用 Python 了。
Python & MySQL - Connect Database Example
Python MySQLdb 提供 MySQLdb.connect() 函数来打开数据库连接。此函数采用多个参数并返回一个连接对象来执行数据库操作。
Syntax
db = MySQLdb.connect(host, username, passwd, dbName, port, socket);
Sr.No. |
Parameter & Description |
1 |
host 可选 - 运行数据库服务器的主机名。如果未指定,则默认值将为 localhost:3306 。 |
2 |
username 可选 - 访问数据库的用户名。如果未指定,则默认值为拥有服务器进程的用户的名字。 |
3 |
passwd 可选 - 访问数据库的用户的密码。如果未指定,则默认值为空密码。 |
4 |
dbName 可选 - 要对其执行查询的数据库名称。 |
5 |
port 可选 - 尝试连接到 MySQL 服务器的端口号。 |
6 |
socket 可选 - 应使用的套接字或命名管道。 |
还有其他多个属性。另请参阅 MySQLdb 以获取完整参考。
您可以随时使用另一个连接对象函数 close() 断开与 MySQL 数据库的连接。
Example
尝试以下示例以连接到 MySQL 服务器 −
将以下示例复制并粘贴为 mysql_example.py −
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")
# Fetch a single row using fetchone() method.
data = cursor.fetchone()
if data:
print('Version available: ', data)
else:
print('Version not retrieved.')
# disconnect from server
db.close()
Python & MySQL - Create Database Example
Python 使用 c.execute(q) 函数创建或删除 MySQL 数据库,其中 c 是游标,而 q 是要执行的查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 创建 MySQL 数据库的 SQL 查询。 |
Example
尝试以下示例来创建数据库 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("CREATE DATABASE TUTORIALS")
print('Database created');
# disconnect from server
db.close()
Python & MySQL - Drop Database Example
Python 使用 c.execute(q) 函数创建或删除 MySQL 数据库,其中 c 是游标,而 q 是要执行的查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - SQL 查询以删除 MySQL 数据库。 |
Example
尝试以下示例来删除数据库−
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("DROP DATABASE TUTORIALS")
print('Database dropped');
# disconnect from server
db.close()
Python & MySQL - Select Database Example
Python MySQLdb 提供 MySQLdb.connect() 功能来选择一个数据库。此功能获取多个参数并返回一个连接对象以执行数据库操作。
Syntax
db = MySQLdb.connect(host, username, passwd, dbName, port, socket);
Sr.No. |
Parameter & Description |
1 |
host 可选 - 运行数据库服务器的主机名。如果未指定,则默认值将为 localhost:3306 。 |
2 |
username 可选 - 访问数据库的用户名。如果未指定,则默认值为拥有服务器进程的用户的名字。 |
3 |
passwd 可选 - 访问数据库的用户的密码。如果未指定,则默认值为空密码。 |
4 |
dbName 可选 - 要对其执行查询的数据库名称。 |
5 |
port 可选 - 尝试连接到 MySQL 服务器的端口号。 |
6 |
socket 可选 - 应使用的套接字或命名管道。 |
您可以随时使用另一个连接对象函数 close() 断开与 MySQL 数据库的连接。
Example
尝试以下示例来连接到 MySQL 数据库 −
将以下示例复制并粘贴为 mysql_example.py −
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")
# Fetch a single row using fetchone() method.
data = cursor.fetchone()
if data:
print('Version available: ', data)
else:
print('Version not retrieved.')
# disconnect from server
db.close()
Python & MySQL - Create Table
Python 使用 c.execute(q) 函数创建表,其中 c 是游标,q 是要执行的查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 用于创建表的 SQL 查询。 |
Example
尝试以下示例以创建一个表 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = """CREATE TABLE tutorials_tbl(
tutorial_id INT NOT NULL AUTO_INCREMENT,
tutorial_title VARCHAR(100) NOT NULL,
tutorial_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( tutorial_id )); """;
# execute SQL query using execute() method.
cursor.execute(sql)
print('tutorials_tbl created')
# disconnect from server
db.close()
Python & MySQL - Drop Table Example
Python 使用 c.execute(q) 功能删除一个表格,其中 c 是游标,q 是要执行的删除查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
Sr.No. |
Parameter & Description |
1 |
$sql 必填 - 用来删除表的 SQL 查询。 |
Example
尝试以下示例来删除一个表格 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123","TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("Drop Table tutorials_tbl")
print('Table dropped');
# disconnect from server
db.close()
PHP & MySQL - Insert Records Example
Python 使用 c.execute(q) 功能在一个表格中插入记录,其中 c 是游标,q 是要执行的插入查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
# commit the record
db.commit()
# get the row id for inserted record
print("ID:", cursor.lastrowid)
# print the number of records inserted
print(mycursor.rowcount, "records inserted.")
Sr.No. |
Parameter & Description |
1 |
$sql 必填 - 用来在一个表格中插入记录的 SQL 查询。 |
Example
尝试以下示例来在一个表格中插入记录 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = """INSERT INTO tutorials_tbl
(tutorial_title,tutorial_author, submission_date)
VALUES ('HTML 5', 'Robert', '2010-02-10'),
('Java', 'Julie', '2020-12-10'),
('JQuery', 'Julie', '2020-05-10')
"""
# execute SQL query using execute() method.
cursor.execute(sql)
# commit the record
db.commit()
# get the row id for inserted record
print("ID:", cursor.lastrowid)
# print the number of records inserted
print(cursor.rowcount, "records inserted.")
# disconnect from server
db.close()
Python & MySQL - Select Records Example
任何数据库上的选择/读取操作意味着从数据库中提取一些有用的信息。
一旦建立数据库连接,您就可以对该数据库进行查询了。您可以使用 fetchone() 方法获取单个记录或使用 fetchall() 方法从数据库表中获取多个值。
-
fetchone() − 从查询结果集中获取下一列。当使用光标对象对表格进行查询时,会返回结果集对象。
-
fetchall() − 从结果集中获取所有列。如果已从结果集中提取一些列,它会从结果集中检索剩余的列。
-
rowcount − 这是只读属性,并返回受 execute() 方法影响的列数。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
result = cursor.fetchall()
for record in result:
print(record)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 从表中选择记录的 SQL 查询。 |
Example
尝试以下示例从表中选择记录 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
Python & MySQL - Update Records Example
Python 使用 c.execute(q) 功能从一个表格中更新记录,其中 c 是游标,q 是要执行的更新查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
cursor.commit()
# get the record count updated
print(mycursor.rowcount, "record(s) affected")
Sr.No. |
Parameter & Description |
1 |
$sql 必填 - 用来更新表中记录的 SQL 查询。 |
Example
尝试以下示例来更新表中的记录 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "UPDATE tutorials_tbl set tutorial_title = "Learning Java" where tutorial_id = 2"
# execute SQL query using execute() method.
cursor.execute(sql)
db.commit()
# get the record count updated
print(cursor.rowcount, " record(s) affected")
# disconnect from server
db.close()
Python & MySQL - Delete Records Example
Python 使用 c.execute(q) 函数从表中删除记录,其中 c 是游标,q 是要执行的删除查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
cursor.commit()
# get the record count updated
print(mycursor.rowcount, "record(s) affected")
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 用于删除表中记录的 SQL 查询。 |
Example
尝试以下示例来在一个表格中插入记录 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Delete from tutorials_tbl where tutorial_id = 2"
# execute SQL query using execute() method.
cursor.execute(sql)
db.commit()
# get the record count updated
print(cursor.rowcount, " record(s) affected")
# disconnect from server
db.close()
Python & MySQL - Where Clause Example
Python 使用 c.execute(q) 函数使用 Where 子句有条件选择表中记录,其中 c 是游标,q 是需要执行的选择查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
result = cursor.fetchall()
for record in result:
print(record)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 从表中选择记录的 SQL 查询。 |
Example
尝试以下示例从表中选择记录 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl Where tutorial_id = 3"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
Python & MySQL - Like Clause Example
Python 使用 c.execute(q) 函数有条件地从表中使用 Like 语句选择记录,其中 c 是游标,q 是要执行的选择查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
result = cursor.fetchall()
for record in result:
print(record)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 使用 Like 语句从表中选择记录的 SQL 查询。 |
Example
尝试以下示例来使用 Like 语句从表中选择记录 -
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl Where tutorial_title like 'J%'"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
Python & MySQL - Sorting Data Example
Python 使用 c.execute(q) 函数从表中使用排序按语句选择记录(按顺序排列),其中 c 是游标,而 q 是要执行的选择查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
result = cursor.fetchall()
for record in result:
print(record)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 从表中选择记录并使用排序按语句进行排序的 SQL 查询。 |
Example
尝试以下示例以通过排序按语句从表中选择已排序的记录 −
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl order by tutorial_title asc"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
Python & MySQL - Using Joins Example
Python 使用 c.execute(q) 函数从表中选择记录,其中 c 是游标,q 是需要执行的选择查询。
Syntax
# execute SQL query using execute() method.
cursor.execute(sql)
result = cursor.fetchall()
for record in result:
print(record)
Sr.No. |
Parameter & Description |
1 |
$sql 必需 - 从表中选择记录的 SQL 查询。 |
首先使用以下脚本在 MySQL 中创建表并插入两条记录。
create table tcount_tbl(
tutorial_author VARCHAR(40) NOT NULL,
tutorial_count int
);
insert into tcount_tbl values('Julie', 2);
insert into tcount_tbl values('Robert', 1);
Example
尝试以下示例以使用连接获取两个表中的记录。−
复制并粘贴以下示例作为 mysql_example.ty -
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = """SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count
FROM tutorials_tbl a, tcount_tbl b
WHERE a.tutorial_author = b.tutorial_author"""
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
Python & MySQL - Performing Transactions
事务是一种确保数据一致性的机制。事务具有以下四个属性 −
-
Atomicity − 事务要么完成,要么根本不会发生。
-
Consistency − 事务必须从一致的状态开始,并以一致的状态离开系统。
-
Isolation − 事务的中间结果在当前事务外不可见。
-
Durability − 一旦提交事务,其效果将持久,即使在系统故障后也是如此。
Python DB API 2.0 提供了两种方法来提交或回滚事务。
Example
您已了解如何实现事务。这儿 снова是类似示例 −
# Prepare SQL query to DELETE required records
sql = "Delete from tutorials_tbl where tutorial_id = 2"
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
COMMIT Operation
提交是一项操作,它向数据库发出一个绿色信号,以最终确定所做的更改,并且在此操作之后,任何更改都将无法还原。
这是一个调用 commit 方法的简单示例。
db.commit()
Python & MySQL - Handling Errors
有许多错误来源。一些示例是已执行 SQL 语句中的语法错误、连接故障或对已取消或完成的语句句柄调用获取方法。
DB API 定义了一些错误,这些错误必须存在于每个数据库模块中。下表列出了这些异常。
Sr.No. |
Exception & Description |
1 |
Warning 用于非致命问题。必须是 StandardError 的子类。 |
2 |
Error 错误的基本类。必须是 StandardError 的子类。 |
3 |
InterfaceError 用于数据库模块中的错误,不是数据库本身的错误。必须是 Error 的子类。 |
4 |
DatabaseError 用于数据库中的错误。必须是 Error 的子类。 |
5 |
DataError DatabaseError 的子类,它指数据中的错误。 |
6 |
OperationalError DatabaseError 的子类,它指错误,例如失去与数据库的连接。这些错误通常都超出了 Python 脚本程序的控制之外。 |
7 |
IntegrityError DatabaseError 的子类,它指破坏关系完整性的情况,例如唯一约束或外键。 |
8 |
InternalError DatabaseError 的子类,它指数据库模块内部的错误,例如游标不再处于活动状态。 |
9 |
ProgrammingError DatabaseError 的子类,它指错误,例如表名错误和其它可以安全地归咎于你的事情。 |
10 |
NotSupportedError DatabaseError 的子类,它指尝试调用不受支持的功能。 |
你的 Python 脚本应该处理这些错误,但在使用任何以上异常之前,请确保你的 MySQLdb 支持该异常。你可以通过阅读 DB API 2.0 规范获取有关它们的更多信息。