Python Mysql 简明教程

Python & MySQL - Quick Guide

Python & MySQL - Overview

Python 数据库接口的 Python 标准是 Python DB-API。大多数 Python 数据库接口都遵守此标准。

您可以为您的应用程序选择合适的数据库。Python Database API 支持范围广泛的数据库服务器,例如−

  1. GadFly

  2. mSQL

  3. MySQL

  4. PostgreSQL

  5. Microsoft SQL Server 2000

  6. Informix

  7. Interbase

  8. Oracle

  9. Sybase

以下是可用的 Python 数据库接口列表: Python Database Interfaces and APIs 。您必须为每个要访问的数据库下载一个单独的 DB API 模块。例如,如果您需要访问 Oracle 数据库和 MySQL 数据库,则必须下载 Oracle 和 MySQL 数据库模块。

DB API 尽力使用 Python 结构和语法为使用数据库的工作提供一个最小标准。此 API 包括以下内容 −

  1. Importing the API module.

  2. 获取与数据库的连接。

  3. 发出 SQL 语句和存储过程。

  4. Closing the connection

MySQLdb

MySQLdb 是从 Python 连接到 MySQL 数据库服务器的接口。它实现 Python 数据库 API v2.0 并建立在 MySQL C API 之上。

Python & MySQL - Environment Setup

Python 可用于各种平台,包括 Linux 和 Mac OS X。让我们了解如何设置我们的 Python 环境。

Local Environment Setup

打开一个终端窗口并输入“python”以找出它是否已经安装,以及安装的是哪个版本。

  1. Unix(Solaris、Linux、FreeBSD、AIX、HP/UX、SunOS、IRIX 等)

  2. Win 9x/NT/2000

  3. Macintosh (Intel, PPC, 68K)

  4. OS/2

  5. DOS (multiple versions)

  6. PalmOS

  7. Nokia mobile phones

  8. Windows CE

  9. Acorn/RISC OS

  10. BeOS

  11. Amiga

  12. VMS/OpenVMS

  13. QNX

  14. VxWorks

  15. Psion

  16. 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 的简单步骤。

  1. 打开网络浏览器,并转到 https://www.python.org/downloads/

  2. 按照链接下载适用于 Unix/Linux 的压缩源代码。

  3. Download and extract files.

  4. 如果要自定义一些选项,请编辑 Modules/Setup 文件。

  5. run ./configure script

  6. make

  7. make install

这会在标准位置 /usr/local/bin 中安装 Python,并在 /usr/local/lib/pythonXX 中安装其库,其中 XX 是 Python 的版本。

Windows Installation

以下是如何在 Windows 机器上安装 Python:

  1. 打开网络浏览器,并转到 https://www.python.org/downloads/

  2. 按照链接获取 Windows 安装程序 python-XYZ.msi 文件,其中 XYZ 是您需要安装的版本。

  3. 要使用此安装程序 python-XYZ.msi,Windows 系统必须支持 Microsoft Installer 2.0。将安装程序文件保存到您的本地机器,然后运行它以了解您的机器是否支持 MSI。

  4. 运行下载的文件。这会打开 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 目录添加到路径中 −

  1. In the csh shell - 键入 setenv PATH "$PATH:/usr/local/bin/python" 并按回车。

  2. In the bash shell (Linux) - 键入 export PATH="$PATH:/usr/local/bin/python" 并按回车。

  3. In the sh or ksh shell - 键入 PATH="$PATH:/usr/local/bin/python" 并按回车。

  4. Note - /usr/local/bin/python是Python目录的路径

Setting path at Windows

要在Windows特定会话的路径中添加Python目录:

At the command prompt - 键入 path %path%;C:\Python 并按回车。

Note - C:\Python是Python目录的路径

Python Environment Variables

以下是Python可以识别的重要环境变量:

Install MySQL Database

当然,您将需要最重要的实际运行数据库,其中包含您可以查询和修改的表。

  1. MySQL DB: MySQL 是一个开源数据库。你可以从 MySQL Official Site 下载它。我们建议下载完整的 Windows 安装。另外,下载并安装 MySQL AdministratorMySQL 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 和密码。

Create Database

要创建 TUTORIALSPOINT 数据库,请执行以下步骤 −

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>

Create Table

要创建 Employees 表中 TUTORIALSPOINT 数据库,请执行以下步骤 −

Step 1

打开 Command Prompt 并更改到安装目录,如下所示 −

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Step 2

登录数据库,如下所示 −

C:\Program Files\MySQL\bin>mysql -u guest -p
Enter password: ********
mysql>

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

MySQLdb

MySQLdb 是从 Python 连接到 MySQL 数据库服务器的接口。它实现 Python 数据库 API v2.0 并建立在 MySQL C API 之上。

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 数据库的连接。

Syntax

db.close()

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

py mysql_example.py
Version available:  ('8.0.23',)

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

Database created

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

Database dropped

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 数据库的连接。

Syntax

db.close()

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

py mysql_example.py
Version available:  ('8.0.23',)

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

tutorials_tbl created

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

Table dropped

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

ID: 5
3 records inserted.

Python & MySQL - Select Records Example

任何数据库上的选择/读取操作意味着从数据库中提取一些有用的信息。

一旦建立数据库连接,您就可以对该数据库进行查询了。您可以使用 fetchone() 方法获取单个记录或使用 fetchall() 方法从数据库表中获取多个值。

  1. fetchone() − 从查询结果集中获取下一列。当使用光标对象对表格进行查询时,会返回结果集对象。

  2. fetchall() − 从结果集中获取所有列。如果已从结果集中提取一些列,它会从结果集中检索剩余的列。

  3. 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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

(1, 'HTML 5', 'Robert', datetime.date(2010, 2, 10))
(2, 'Java', 'Julie', datetime.date(2020, 12, 10))
(3, 'JQuery', 'Julie', datetime.date(2020, 5, 10))

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

1 record(s) affected

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

1 record(s) affected

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

(3, 'JQuery', 'Julie', datetime.date(2020, 5, 10))

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

(6, 'Java', 'Julie', datetime.date(2020, 12, 10))
(7, 'JQuery', 'Julie', datetime.date(2020, 5, 10))

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

(1, 'HTML 5', 'Robert', datetime.date(2010, 2, 10))
(2, 'Java', 'Julie', datetime.date(2020, 12, 10))
(3, 'JQuery', 'Julie', datetime.date(2020, 5, 10))

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()

Output

使用 Python 执行 mysql_example.py 脚本并验证输出。

(1, 'Robert', 1)
(2, 'Julie', 2)
(3, 'Julie', 2)

Python & MySQL - Performing Transactions

事务是一种确保数据一致性的机制。事务具有以下四个属性 −

  1. Atomicity − 事务要么完成,要么根本不会发生。

  2. Consistency − 事务必须从一致的状态开始,并以一致的状态离开系统。

  3. Isolation − 事务的中间结果在当前事务外不可见。

  4. 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()

ROLLBACK Operation

如果您不满意一项或多项更改,并且希望完全还原这些更改,那么请使用 rollback() 方法。

这是一个调用 rollback() 方法的简单示例。

db.rollback()

Disconnecting Database

要断开数据库连接,请使用 close() 方法。

db.close()

如果用户使用 close() 方法关闭与数据库的连接,那么 DB 会回滚所有未完成的事务。但是,您的应用程序不应依赖于任何 DB 较低级别实现细节,而应显式调用 commit 或 rollback。

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 规范获取有关它们的更多信息。