Python MySQL Connector是一个 Python 驱动程序,有助于集成 Python 和 MySQL。这个 Python MySQL 库允许在 Python 和 MySQL 数据类型之间进行转换。MySQL Connector API 使用纯 Python 实现,不需要任何第三方库。 

Python MySQL 教程将帮助您学习如何从基础到高级将 MySQL 与 Python 结合使用,包括借助优秀的 Python MySQL 示例详细解释的所有必要函数和查询。那么,让我们开始吧。

安装

要安装Python-mysql-connector模块,必须在他们的系统上预装 Python 和 PIP。如果 Python 和 pip 已安装,请在终端中键入以下命令。

pip3 install mysql-connector-python

注意:如果 Python 不存在,请查看如何在WindowsLinux上安装 Python ?并按照提供的说明进行操作。

连接到 MySQL 服务器

我们可以使用 connect() 方法连接到 MySQL 服务器。 

# importing required libraries
import mysql.connector

dataBase = mysql.connector.connect(
host ="localhost",
user ="user",
passwd ="password"
)

print(dataBase)

# Disconnecting from the server
dataBase.close()

输出:

<mysql.connector.connection_cext.CMySQLConnection 对象在 0x7f73f0191d00>

注意:有关更多信息,请参阅使用 MySQL-Connector Python 连接 MySQL 数据库

创建数据库

连接到 MySQL 服务器后,让我们看看如何使用 Python创建 MySQL 数据库。为此,我们将首先创建一个 cursor() 对象,然后将 SQL 命令作为字符串传递给 execute() 方法。创建数据库的 SQL 命令是—— 

CREATE DATABASE DATABASE_NAME

示例:使用 Python 创建 MySQL 数据库

# importing required libraries
import mysql.connector

dataBase = mysql.connector.connect(
host ="localhost",
user ="user",
passwd ="password"
)

# preparing a cursor object
cursorObject = dataBase.cursor()

# creating database
cursorObject.execute("CREATE DATABASE gfg")

输出:

创建表

对于创建表,我们将遵循类似的方法,将 SQL 命令编写为字符串,然后将其传递给游标对象的 execute() 方法。用于创建表的 SQL 命令是 - 

CREATE TABLE
(
    column_name_1 column_Data_type,
    column_name_2 column_Data_type,
    :
    :
    column_name_n column_Data_type
);

示例:使用 Python 创建 MySQL 表

# importing required libraries
import mysql.connector

dataBase = mysql.connector.connect(
host ="localhost",
user ="user",
passwd ="password",
database = "gfg"
)

# preparing a cursor object
cursorObject = dataBase.cursor()

# creating table
studentRecord = """CREATE TABLE STUDENT (
				NAME VARCHAR(20) NOT NULL,
				BRANCH VARCHAR(50),
				ROLL INT NOT NULL,
				SECTION VARCHAR(5),
				AGE INT
				)"""

# table created
cursorObject.execute(studentRecord)

# disconnecting from server
dataBase.close()

输出:

将数据插入表格

数据插入 MySQL 表使用Insert into query。 

句法:

 INSERT INTO table_name (column_names) VALUES (data)

示例 1:插入单行

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
sql = "INSERT INTO STUDENT (NAME, BRANCH, ROLL, SECTION, AGE)\
VALUES (%s, %s, %s, %s, %s)"
val = ("Ram", "CSE", "85", "B", "19")
   
cursorObject.execute(sql, val)
dataBase.commit()
   
# disconnecting from server
dataBase.close()

输出:

示例 2:插入多行

要一次插入多个值,使用 executemany() 方法。此方法遍历参数序列,将当前参数传递给 execute 方法。

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
sql = "INSERT INTO STUDENT (NAME, BRANCH, ROLL, SECTION, AGE)\
VALUES (%s, %s, %s, %s, %s)"
val = [("Nikhil", "CSE", "98", "A", "18"),
       ("Nisha", "CSE", "99", "A", "18"),
       ("Rohan", "MAE", "43", "B", "20"),
       ("Amit", "ECE", "24", "A", "21"),
       ("Anil", "MAE", "45", "B", "20"),
       ("Megha", "ECE", "55", "A", "22"),
       ("Sita", "CSE", "95", "A", "19")]
   
cursorObject.executemany(sql, val)
dataBase.commit()
   
# disconnecting from server
dataBase.close()

输出:

获取数据

我们可以通过以下方式对 MySQL 表使用select 查询-

  • 为了从表中选择特定的属性列,我们编写属性名称。
从表名中选择 attr1、attr2
  • 为了从表中选择所有属性列,我们使用星号“*”符号。
选择 * FROM 表名

示例:使用Python从 MySQL 表中选择数据

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query = "SELECT NAME, ROLL FROM STUDENT"
cursorObject.execute(query)
   
myresult = cursorObject.fetchall()
   
for x in myresult:
    print(x)
 
# disconnecting from server
dataBase.close()

输出:

哪里子句

MySQL数据库中使用where子句根据需要的条件过滤数据。您可以使用 where 子句获取、删除或更新 MySQL 数据库中的特定数据集。

句法:

选择第 1 列,第 2 列,...。来自[表名]的第N列,其中[条件];

示例:使用 Python 的 MySQL 中的 Where 子句

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query = "SELECT * FROM STUDENT where AGE >=20"
cursorObject.execute(query)
   
myresult = cursorObject.fetchall()
   
for x in myresult:
    print(x)
 
# disconnecting from server
dataBase.close()

输出:

('罗汉','MAE',43,'B',20)
('阿米特','ECE',24,'A',21)
('阿尼尔','MAE',45,'B',20)
('Megha','ECE',55,'A',22)

按条款排序

OrderBy用于按升序或降序排列结果集。默认情况下,除非提到“DESC”,否则它始终按升序排列,它按降序排列。“ASC”也可以用来明确地按升序排列。但是,通常不会这样做,因为默认已经这样做了。

句法:

选择第 1 列,第 2 列
FROM 表名
按列名 ASC|DESC 排序;

示例:使用 Python 的 MySQL 中的 Order By 子句

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query = "SELECT * FROM STUDENT ORDER BY NAME DESC"
cursorObject.execute(query)
   
myresult = cursorObject.fetchall()
   
for x in myresult:
    print(x)
 
# disconnecting from server
dataBase.close()

输出:

限制条款

Limit 子句在SQL 中用于控制或限制从生成的查询返回的结果集中的记录数。默认情况下,SQL 从顶部开始给出所需的记录数,但它允许使用 OFFSET 关键字。OFFSET 允许您从自定义行开始并获得所需数量的结果行。

句法:

SELECT * FROM 表名 LIMIT 限制;
SELECT * FROM tablename LIMIT 限制 OFFSET 偏移量;

示例:使用 Python 的 MySQL 中的限制子句

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query = "SELECT * FROM STUDENT LIMIT 2 OFFSET 1"
cursorObject.execute(query)
   
myresult = cursorObject.fetchall()
   
for x in myresult:
    print(x)
 
# disconnecting from server
dataBase.close()

输出:

('Nikhil', 'CSE', 98, 'A', 18)
('Nisha','CSE',99,'A',18)

更新数据

更新查询用于更改数据库中的现有值。通过使用更新,可以更正或更新特定值。它只影响数据而不影响表的结构。此命令提供的基本优点是它保持表格准确。

句法:

更新表名
SET =“新值”
WHERE =“旧值”;

示例:使用 Python 更新 MySQL 表

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query = "UPDATE STUDENT SET AGE = 23 WHERE Name ='Ram'"
cursorObject.execute(query)
dataBase.commit()
 
# disconnecting from server
dataBase.close()

输出:

从表中删除数据

我们可以使用Delete 查询从 MySQL 中的表中删除数据。

句法:

从 TABLE_NAME 中删除 ATTRIBUTE_NAME = ATTRIBUTE_VALUE

示例:使用 Python 从 MySQL 表中删除数据

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query = "DELETE FROM STUDENT WHERE NAME = 'Ram'"
cursorObject.execute(query)
dataBase.commit()
 
# disconnecting from server
dataBase.close()

输出:

删除表

删除命令影响表的结构而不是数据。它用于删除已经存在的表。对于不确定要删除的表是否存在的情况,使用 DROP TABLE IF EXISTS 命令。这两种情况都将在以下示例中处理。

句法:

DROP TABLE 表名;
如果存在表名,则删除表;

首先,让我们看看我们数据库中的表列表。

我们可以看到有两个学生表,所以让我们删除第二个表。

示例 1:使用 Python 在 MySQL 中删除表

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query ="DROP TABLE Student;"
 
cursorObject.execute(query)
dataBase.commit()
 
# disconnecting from server
dataBase.close()

输出:

示例 2:删除表(如果存在)

  • Python3

# importing required libraries
import mysql.connector
  
dataBase = mysql.connector.connect(
  host ="localhost",
  user ="user",
  passwd ="password",
  database = "gfg"
)
 
# preparing a cursor object
cursorObject = dataBase.cursor()
  
query ="Drop Table if exists Employee;"
 
cursorObject.execute(query)
dataBase.commit()
 
# disconnecting from server
dataBase.close()

上面的例子,不会产生任何错误和输出,因为我们使用了 Drop Table is exists 查询。如果我们将简单地使用 Drop table Employee 那么ProgrammingError: 1051 (42S02): Unknown table 'gfg.Employee'被提出。

Python MySQL 练习

使用表格

在列上工作

Python MySQL 应用程序和项目

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐