Python 和 MySQL - 快速指南


Python 和 MySQL - 概述

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

您可以为您的应用程序选择正确的数据库。Python 数据库 API 支持广泛的数据库服务器,例如 -

  • 数据库管理
  • MySQL
  • PostgreSQL
  • 微软SQL服务器2000
  • 信息系统
  • 英特贝斯
  • 甲骨文
  • 赛贝斯

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

DB API 提供了尽可能使用 Python 结构和语法来处理数据库的最低标准。该 API 包括以下内容 -

  • 导入 API 模块。
  • 获取与数据库的连接。
  • 发出 SQL 语句和存储过程。
  • 关闭连接

MySQL数据库

MySQLdb 是一个用于从 Python 连接到 MySQL 数据库服务器的接口。它实现了 Python 数据库 API v2.0,并构建在 MySQL C API 之上。

Python 和 MySQL - 环境设置

Python 可在多种平台上使用,包括 Linux 和 Mac OS X。让我们了解如何设置 Python 环境。

本地环境设置

打开终端窗口并输入“python”以查明它是否已安装以及安装的版本。

  • Unix(Solaris、Linux、FreeBSD、AIX、HP/UX、SunOS、IRIX 等)
  • 赢得 9x/NT/2000
  • Macintosh(英特尔、PPC、68K)
  • 操作系统/2
  • DOS(多个版本)
  • 掌上操作系统
  • 诺基亚手机
  • WindowsCE
  • 橡子/RISC操作系统
  • 贝奥斯
  • 阿米加
  • 虚拟管理系统/开放虚拟管理系统
  • QNX
  • VxWorks
  • 心灵术士
  • Python 还被移植到 Java 和 .NET 虚拟机

获取Python

最新的、最新的源代码、二进制文件、文档、新闻等,可以在Python的官方网站https://www.python.org/上找到

您可以从https://www.python.org/doc/下载 Python 文档。该文档以 HTML、PDF 和 PostScript 格式提供。

安装Python

Python 发行版可用于多种平台。您只需下载适用于您的平台的二进制代码并安装 Python。

如果您的平台的二进制代码不可用,您需要 C 编译器来手动编译源代码。编译源代码在选择安装中所需的功能方面提供了更大的灵活性。

以下是在各种平台上安装 Python 的快速概述 -

Unix 和 Linux 安装

以下是在 Unix/Linux 机器上安装 Python 的简单步骤。

  • 打开 Web 浏览器并转到https://www.python.org/downloads/

  • 点击链接下载适用于 Unix/Linux 的压缩源代码。

  • 下载并解压文件。

  • 如果您想自定义某些选项,请编辑模块/安装文件。

  • 运行./configure脚本

  • 制作

  • 进行安装

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

Windows安装

以下是在 Windows 计算机上安装 Python 的步骤。

  • 打开 Web 浏览器并转到https://www.python.org/downloads/

  • 单击 Windows 安装程序python-XYZ.msi文件的链接,其中 XYZ 是您需要安装的版本。

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

  • 运行下载的文件。这会弹出 Python 安装向导,非常易于使用。只需接受默认设置,等待安装完成即可。

Macintosh 安装

最近的 Mac 都安装了 Python,但它可能已经过时了几年。有关获取当前版本以及支持 Mac 上开发的额外工具的说明,请参阅https://www.python.org/download/mac/ 。对于 Mac OS X 10.3(2003 年发布)之前的旧版 Mac 操作系统,可以使用 MacPython。

Jack Jansen 维护它,您可以在他的网站上完全访问整个文档 - https://www.cwi.nl/~jack/macpython.html。您可以找到 Mac OS 安装的完整安装详细信息。

设置路径

程序和其他可执行文件可以位于许多目录中,因此操作系统提供了一个搜索路径,其中列出了操作系统搜索可执行文件的目录。

该路径存储在环境变量中,该变量是由操作系统维护的命名字符串。该变量包含命令 shell 和其他程序可用的信息。

路径变量在 Unix 中命名为 PATH,在 Windows 中命名为 Path(Unix 区分大小写;Windows 不区分大小写)

在 Mac OS 中,安装程序处理路径详细信息。要从任何特定目录调用 Python 解释器,您必须将 Python 目录添加到您的路径中。

在 Unix/Linux 下设置路径

将 Python 目录添加到 Unix 中特定会话的路径 -

  • 在 csh shell 中- 输入 setenv PATH "$PATH:/usr/local/bin/python" 并按 Enter。

  • 在 bash shell (Linux) 中- 输入 export PATH="$PATH:/usr/local/bin/python" 并按 Enter。

  • 在 sh 或 ksh shell 中- 输入 PATH="$PATH:/usr/local/bin/python" 并按 Enter。

  • 注意- /usr/local/bin/python 是 Python 目录的路径

在 Windows 下设置路径

将 Python 目录添加到 Windows 中特定会话的路径 -

在命令提示符处- 输入路径 %path%;C:\Python 并按 Enter。

注意- C:\Python 是 Python 目录的路径

Python环境变量

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

安装MySQL数据库

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

  • MySQL DB: MySQL 是一个开源数据库。您可以从MySQL 官方网站下载它。我们建议下载完整的 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。您的驱动程序版本可能会因您的安装而异。

设置数据库凭证

当我们安装 MySQL 数据库时,其管理员 ID 被设置为root,并且可以设置您选择的密码。

使用 root ID 和密码,您可以创建另一个用户 ID 和密码,也可以将 root ID 和密码用于 JDBC 应用程序。

有各种数据库操作,例如数据库创建和删除,需要管理员 ID 和密码。

对于 JDBC 教程的其余部分,我们将使用 MySQL 数据库,其中guest作为 ID,guest123作为密码。

如果您没有足够的权限来创建新用户,那么您可以要求数据库管理员 (DBA) 为您创建用户 ID 和密码。

创建数据库

要创建TUTORIALSPOINT数据库,请使用以下步骤 -

步骤1

打开命令提示符并更改为安装目录,如下所示 -

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

注意:mysqld.exe的路径可能会有所不同,具体取决于系统上 MySQL 的安装位置。您还可以查看有关如何启动和停止数据库服务器的文档。

第2步

如果数据库服务器尚未运行,请执行以下命令来启动它。

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

步骤3

通过执行以下命令创建TUTORIALSPOINT数据库 -

C:\Program Files\MySQL\bin> mysqladmin create TUTORIALSPOINT -u guest -p
Enter password: ********
C:\Program Files\MySQL\bin>

创建表

要在 TUTORIALSPOINT 数据库中创建员工表,请使用以下步骤 -

步骤1

打开命令提示符并更改为安装目录,如下所示 -

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

第2步

登录数据库如下 -

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

步骤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>

创建数据记录

最后,您在 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 教程

MySQL数据库

MySQLdb 是一个用于从 Python 连接到 MySQL 数据库服务器的接口。它实现了 Python 数据库 API v2.0,并构建在 MySQL C API 之上。

如何安装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

注意- 确保您具有安装上述模块的 root 权限。

现在您已准备好开始尝试 Python。

Python 和 MySQL - 连接数据库示例

Python MySQLdb 提供MySQLdb.connect()函数来打开数据库连接。该函数接受多个参数并返回一个连接对象来执行数据库操作。

句法

db = MySQLdb.connect(host, username, passwd, dbName, port, socket);

先生。 参数及说明
1

主持人

可选 - 运行数据库服务器的主机名。如果未指定,则默认值为localhost:3306

2

用户名

可选 - 访问数据库的用户名。如果未指定,则默认值将是拥有服务器进程的用户的名称。

3

密码

可选 - 访问数据库的用户的密码。如果未指定,则默认密码为空。

4

数据库名称

可选 - 要执行查询的数据库名称。

5

港口

可选 - 尝试连接到 MySQL 服务器的端口号。

6

插座

可选 - 应使用的套接字或命名管道。

还有其他几个属性。请参阅MySQLdb以获取完整参考。

您可以随时使用另一个连接对象函数close()断开与 MySQL 数据库的连接。

句法

db.close()

例子

尝试以下示例来连接到 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_example.py 脚本并验证输出。

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

Python 和 MySQL - 创建数据库示例

Python 使用c.execute(q)函数创建或删除 MySQL 数据库,其中 c 是游标,q 是要执行的查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

先生。 参数及说明
1

$sql

必需 - 用于创建 MySQL 数据库的 SQL 查询。

例子

尝试以下示例来创建数据库 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

Database created

Python 和 MySQL - 删除数据库示例

Python 使用c.execute(q)函数创建或删除 MySQL 数据库,其中 c 是游标,q 是要执行的查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

先生。 参数及说明
1

$sql

必需 - 用于删除 MySQL 数据库的 SQL 查询。

例子

尝试以下示例来删除数据库 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

Database dropped

Python 和 MySQL - 选择数据库示例

Python MySQLdb 提供MySQLdb.connect()函数来选择数据库。该函数接受多个参数并返回一个连接对象来执行数据库操作。

句法

db = MySQLdb.connect(host, username, passwd, dbName, port, socket);

先生。 参数及说明
1

主持人

可选 - 运行数据库服务器的主机名。如果未指定,则默认值为localhost:3306

2

用户名

可选 - 访问数据库的用户名。如果未指定,则默认值将是拥有服务器进程的用户的名称。

3

密码

可选 - 访问数据库的用户的密码。如果未指定,则默认密码为空。

4

数据库名称

可选 - 要执行查询的数据库名称。

5

港口

可选 - 尝试连接到 MySQL 服务器的端口号。

6

插座

可选 - 应使用的套接字或命名管道。

您可以随时使用另一个连接对象函数close()断开与 MySQL 数据库的连接。

句法

db.close()

例子

尝试以下示例连接到 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_example.py 脚本并验证输出。

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

Python 和 MySQL - 创建表

Python 使用c.execute(q)函数创建一个表,其中 c 是光标,q 是要执行的查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

先生。 参数及说明
1

$sql

必需 - 用于创建表的 SQL 查询。

例子

尝试以下示例来创建一个表 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

tutorials_tbl created

Python 和 MySQL - 删除表示例

Python 使用c.execute(q)函数删除表,其中 c 是游标,q 是要执行的删除查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

先生。 参数及说明
1

$sql

必需 - 用于删除表的 SQL 查询。

例子

尝试以下示例来删除表 -

将以下示例复制并粘贴为 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()

输出

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

Table dropped

PHP 和 MySQL - 插入记录示例

Python 使用c.execute(q)函数在表中插入一条记录,其中 c 是游标,q 是要执行的插入查询。

句法

# 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.")

先生。 参数及说明
1

$sql

必需 - 用于在表中插入记录的 SQL 查询。

例子

尝试以下示例在表中插入记录 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

ID: 5
3 records inserted.

Python 和 MySQL - 选择记录示例

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

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

  • fetchone() - 它获取查询结果集的下一行。结果集是使用游标对象查询表时返回的对象。

  • fetchall() - 它获取结果集中的所有行。如果已经从结果集中提取了一些行,则它会从结果集中检索剩余的行。

  • rowcount - 这是一个只读属性,返回受execute() 方法影响的行数。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

result = cursor.fetchall()

for record in result:
   print(record)

先生。 参数及说明
1

$sql

必需 - 用于从表中选择记录的 SQL 查询。

例子

尝试以下示例从表中选择记录 -

将以下示例复制并粘贴为 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_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 - 更新记录示例

Python 使用c.execute(q)函数更新表中的记录,其中 c 是游标,q 是要执行的更新查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

cursor.commit()

# get the record count updated
print(mycursor.rowcount, "record(s) affected")

先生。 参数及说明
1

$sql

必需 - 用于更新表中记录的 SQL 查询。

例子

尝试以下示例来更新表中的记录 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

1 record(s) affected

Python 和 MySQL - 删除记录示例

Python 使用c.execute(q)函数从表中删除记录,其中 c 是游标,q 是要执行的删除查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

cursor.commit()

# get the record count updated
print(mycursor.rowcount, "record(s) affected")

先生。 参数及说明
1

$sql

必需 - 用于删除表中记录的 SQL 查询。

例子

尝试以下示例在表中插入记录 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

1 record(s) affected

Python 和 MySQL -Where 子句示例

Python 使用c.execute(q)函数使用Where子句有条件地从表中选择记录,其中c是光标,q是要执行的选择查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

result = cursor.fetchall()

for record in result:
   print(record)

先生。 参数及说明
1

$sql

必需 - 用于从表中选择记录的 SQL 查询。

例子

尝试以下示例从表中选择记录 -

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

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

Python 和 MySQL - Like 子句示例

Python 使用c.execute(q)函数使用 Like 语句有条件地从表中选择记录,其中 c 是游标,q 是要执行的选择查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

result = cursor.fetchall()

for record in result:
   print(record)

先生。 参数及说明
1

$sql

必需 - 使用 Like 语句从表中选择记录的 SQL 查询。

例子

尝试以下示例,使用 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_example.py 脚本并验证输出。

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

Python 和 MySQL - 数据排序示例

Python 使用c.execute(q)函数使用 sort by 语句从表中按排序顺序选择记录,其中 c 是游标,q 是要执行的选择查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

result = cursor.fetchall()

for record in result:
   print(record)

先生。 参数及说明
1

$sql

必需 - SQL 查询从表中选择记录并使用 sort by 语句进行排序。

例子

尝试以下示例,使用 sort by 语句从表中选择排序记录 -

将以下示例复制并粘贴为 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_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 - 使用联接示例

Python 使用c.execute(q)函数从表中选择一条记录,其中 c 是光标,q 是要执行的选择查询。

句法

# execute SQL query using execute() method.
cursor.execute(sql)

result = cursor.fetchall()

for record in result:
   print(record)

先生。 参数及说明
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);

例子

尝试以下示例以使用 Join 从两个表中获取记录。-

将以下示例复制并粘贴为 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_example.py 脚本并验证输出。

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

Python 和 MySQL - 执行事务

事务是一种保证数据一致性的机制。交易具有以下四个属性 -

  • Atomics性- 事务要么完成,要么什么也没有发生。

  • 一致性- 事务必须以一致的状态开始并使系统处于一致的状态。

  • 隔离- 事务的中间结果在当前事务之外不可见。

  • 持久性- 一旦事务被提交,即使在系统发生故障之后,其影响也是持久的。

Python DB API 2.0 提供了两种提交回滚事务的方法。

例子

您已经知道如何实施交易。这里又是一个类似的例子 -

# 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 是一个操作,它向数据库发出绿色信号以完成更改,并且在该操作之后,任何更改都无法恢复。

这是一个调用commit方法的简单示例。

db.commit()

回滚操作

如果您对一项或多项更改不满意并且想要完全恢复这些更改,请使用rollback()方法。

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

db.rollback()

断开数据库连接

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

db.close()

如果用户使用 close() 方法关闭与数据库的连接,则数据库将回滚任何未完成的事务。但是,您的应用程序最好显式调用提交或回滚,而不是依赖任何数据库较低级别的实现细节。

Python 和 MySQL - 处理错误

错误的来源有很多。一些示例包括执行的 SQL 语句中的语法错误、连接失败或为已取消或完成的语句句柄调用 fetch 方法。

DB API 定义了每个数据库模块中必须存在的许多错误。下表列出了这些例外情况。

先生。 异常情况及说明
1

警告

用于非致命问题。必须子类化 StandardError。

2

错误

错误的基类。必须子类化 StandardError。

3

接口错误

用于数据库模块中的错误,而不是数据库本身的错误。必须子类化错误。

4

数据库错误

用于数据库中的错误。必须子类化错误。

5

数据错误

DatabaseError 的子类,指的是数据中的错误。

6

操作错误

DatabaseError 的子类,指的是诸如数据库连接丢失之类的错误。这些错误通常超出了 Python 脚本编写者的控制范围。

7

完整性错误

DatabaseError 的子类,适用于会损害关系完整性的情况,例如唯一性约束或外键。

8

内部错误

DatabaseError 的子类,指的是数据库模块内部的错误,例如游标不再处于活动状态。

9

编程错误

DatabaseError 的子类,指的是错误的表名和其他可以安全地归咎于您的错误。

10

不支持错误

DatabaseError 的子类,指的是尝试调用不受支持的功能。

您的 Python 脚本应该处理这些错误,但在使用上述任何异常之前,请确保您的 MySQLdb 支持该异常。您可以通过阅读 DB API 2.0 规范来获取有关它们的更多信息。