如何使用Python在MySQL中使用连接查询?

以下是如何使用Python在MySQL中使用连接查询的完整使用攻略,包括连接MySQL数据库、创建表、插入数据、使用连接查询等步骤。同时,提供两个示例以便更好理解如何使用Python在MySQL中使用连接查询。

步骤1:连接MySQL数据库

在Python中,我们可以使用pymysql模块连接到MySQL数据库。以下是连接MySQL数据库的基本语法:

import pymysql

db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='database_name', charset='utf8')

在上面的语法中,host是数据库服务器的主机名,port是端口号,userpassword是用户名和密码,db是要使用的数据库的名称,charset是字符集。

步骤2:创建表并插入数据

在MySQL中,我们需要创建表并插入数据才能使用连接查询。以下是创建表并插入数据的基本语法:

cursor = db.cursor()

# 创建表
sql1 = """
CREATE TABLE IF NOT EXISTS students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT,
    gender VARCHAR(10)
)
"""

sql2 = """
CREATE TABLE IF NOT EXISTS scores (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    course VARCHAR(50),
    score INT,
    FOREIGN KEY (student_id) REFERENCES students(id)
)
"""

cursor.execute(sql1)
cursor.execute(sql2)

# 插入数据
sql3 = """
INSERT INTO students (name, age, gender) VALUES
('Tom', 18, 'male'),
('Lucy', 19, 'female'),
('John', 20, 'male')
"""

sql4 = """
INSERT INTO scores (student_id, course, score) VALUES
(1, 'Math', 90),
(1, 'English', 80),
(2, 'Math', 85),
(2, 'English', 95),
(3, 'Math', 75),
(3, 'English', 70)
"""

cursor.execute(sql3)
cursor.execute(sql4)

db.commit()

在上面的语法中,我们首先创建一个cursor对象,并使用execute方法执行创建表和插入数据的语句。最后,我们使用commit方法提交更改。

步骤3:使用连接查询

在MySQL中,我们可以使用JOIN关键字进行连接查询。以下是使用连接查询的基本语法:

cursor = db.cursor()

sql = """
SELECT students.name, scores.course, scores.score
FROM students
JOIN scores
ON students.id = scores.student_id
"""

cursor.execute(sql)

results = cursor.fetchall()

for row in results:
    print(row)

db.close()

在上面的语法中,我们首先创建一个cursor对象,并使用execute方法执行连接查询语句。接着,我们使用fetchall方法获取查询结果,并使用for循环遍历结果并打印出每一行数据。最后,我们使用close方法关闭数据库连接。

示例1

在这个示例中,我们使用Python在MySQL中使用连接查询,查询students表和scores表中的数据。

import pymysql

db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8')

cursor = db.cursor()

# 创建表
sql1 = """
CREATE TABLE IF NOT EXISTS students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT,
    gender VARCHAR(10)
)
"""

sql2 = """
CREATE TABLE IF NOT EXISTS scores (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    course VARCHAR(50),
    score INT,
    FOREIGN KEY (student_id) REFERENCES students(id)
)
"""

cursor.execute(sql1)
cursor.execute(sql2)

# 插入数据
sql3 = """
INSERT INTO students (name, age, gender) VALUES
('Tom', 18, 'male'),
('Lucy', 19, 'female'),
('John', 20, 'male')
"""

sql4 = """
INSERT INTO scores (student_id, course, score) VALUES
(1, 'Math', 90),
(1, 'English', 80),
(2, 'Math', 85),
(2, 'English', 95),
(3, 'Math', 75),
(3, 'English', 70)
"""

cursor.execute(sql3)
cursor.execute(sql4)

# 连接查询
sql5 = """
SELECT students.name, scores.course, scores.score
FROM students
JOIN scores
ON students.id = scores.student_id
"""

cursor.execute(sql5)

results = cursor.fetchall()

for row in results:
    print(row)

db.close()

在上面的代码中,我们首先使用pymysql模块连接到MySQL数据库。然后,我们创建一个cursor对象,并使用execute方法执行创建表和插入数据的语句。接着,我们使用execute方法执行连接查询语句。最后,我们使用fetchall方法获取查询结果,并使用for循环遍历结果并打印出每一行数据。最后,我们使用close方法关闭数据库连接。

示例2

在这个示例中,我们使用Python在MySQL中使用连接查询,查询students表和scores表中的数据,并按照score字段降序排列。

import pymysql

db = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='test', charset='utf8')

cursor = db.cursor()

# 创建表
sql1 = """
CREATE TABLE IF NOT EXISTS students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    age INT,
    gender VARCHAR(10)
)
"""

sql2 = """
CREATE TABLE IF NOT EXISTS scores (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    course VARCHAR(50),
    score INT,
    FOREIGN KEY (student_id) REFERENCES students(id)
)
"""

cursor.execute(sql1)
cursor.execute(sql2)

# 插入数据
sql3 = """
INSERT INTO students (name, age, gender) VALUES
('Tom', 18, 'male'),
('Lucy', 19, 'female'),
('John', 20, 'male')
"""

sql4 = """
INSERT INTO scores (student_id, course, score) VALUES
(1, 'Math', 90),
(1, 'English', 80),
(2, 'Math', 85),
(2, 'English', 95),
(3, 'Math', 75),
(3, 'English', 70)
"""

cursor.execute(sql3)
cursor.execute(sql4)

# 连接查询
sql5 = """
SELECT students.name, scores.course, scores.score
FROM students
JOIN scores
ON students.id = scores.student_id
ORDER BY scores.score DESC
"""

cursor.execute(sql5)

results = cursor.fetchall()

for row in results:
    print(row)

db.close()

在上面的代码中,我们首先使用pymysql模块连接到MySQL数据库。然后,我们创建一个cursor对象,并使用execute方法执行创建表和插入数据的语句。接着,我们使用execute方法执行连接查询语句,并使用ORDER BY关键字按照score字段降序排列。最后,我们使用fetchall方法获取查询结果,并使用for循环遍历结果并打印出每一行数据。最后,我们使用close方法关闭数据库连接。

以上是如何使用Python在MySQL中使用连接查询的完整使用攻略,包括连接MySQL数据库、创建表、插入数据、使用连接查询等步骤。同时,提供了两个示例以便更好理解如何使用Python在MySQL中使用连接查询。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Python在MySQL中使用连接查询? - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • python数据结构输入输出及控制和异常

    Python是一种高级编程语言,它支持多种数据类型和数据结构,我们可以使用这些数据类型和数据结构来存储和组织数据,进一步处理和分析数据。 数据结构 列表 列表(List)是Python中最基本的数据结构之一,它可以存储一个序列的元素。列表可以用方括号括起来,元素之间用逗号隔开。以下是一个示例: list1 = [1, 2, 3, 4, 5] print(li…

    python 2023年5月13日
    00
  • MySQL数据类型DECIMAL用法

    MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。 要定义数据类型为DECIMAL的列,请使用以下语法: 1 column_name  DECIMAL(P,D); 在上面的语法中: P是表示有效数字数的精度。 P范围为1〜65。 D是表示小数点后的位数。 D的范围…

    MySQL 2023年4月13日
    00
  • 详解Python PIL ImagePath.Path.getbbox()方法

    Python中的PIL模块是个非常有用的模块,提供了很多处理图像的方法和工具。在该模块中,ImagePath是其中的一个子模块,该子模块提供了一类可用于解析和操作路径的类,路径可以是 SVG 路径或者 W3C-path-data 。 ImagePath.Path.getbbox()方法是ImagePath.Path类的其中一个方法,它用于返回符合路径描边的最…

    python-answer 2023年3月25日
    00
  • 香,一套逻辑轻松且智能解决PyQt中控件数值验证的问题

    在PyQt开发中,时常需要对控件的值进行校验,如需要校验QCheckBox是否被选中,QLabel是否校验值是否为空等等。在复杂的业务场景下,这类控件如果数量很多,逐个校验就显得麻烦,需要一一获得控件名称,再调用对应的方法来判断是否被选中、是否为空等。而且开发过程中如果多控件做了增减,还需要增减校验的逻辑,那会要了老命。 此篇文章,推荐使用__dict__属…

    python 2023年4月17日
    00
  • Python设计模式之代理模式简单示例

    下面是针对“Python设计模式之代理模式简单示例”的完整攻略: 简介 代理模式是一种结构型设计模式,允许你提供对象的替代品或代表,以控制对这个对象的访问。在有些情况下,直接访问对象是不方便或者不符合需要,使用代理对象来间接访问对象,可以更好地控制对对象的访问。 实现示例 示例一 假设我们有一个文件下载器,可以通过给定的URL下载文件,代码如下: impor…

    python 2023年6月5日
    00
  • python如何在列表、字典中筛选数据

    下面是关于Python如何在列表、字典中筛选数据的完整攻略: 筛选列表中的数据 Python中可以使用列表推导式(List Comprehension)对一个列表进行筛选,将符合条件的元素筛选出来组成一个新的列表。 列表推导式的语法如下: new_list = [expression for item in old_list if condition] 其中…

    python 2023年5月13日
    00
  • Python知识之列表的十个小技巧分享

    Python知识之列表的十个小技巧分享 在Python编程中,列表是一种非常常用的数据类型。下面将介绍十个小技巧,帮助你更加高效地使用列表。 技巧1:使用列表推导式 推导式是Python中常用的一种语法,它可以快速生成一个列表。下面是一个示例演示了如何使用列表推导式生成一个包含1到的整数的列表 lst = [i for i in range(1, 11)] …

    python 2023年5月13日
    00
  • Mysql查询语句优化技巧

    MySQL查询语句是我们在开发中常用到的,当数据量上升时我们就需要使用优化技巧来提高查询效率,下面我将详细讲解Mysql查询语句优化技巧。 1. 索引优化 在MySQL中,索引可以大大提高数据检索的速度。索引会创建一个有序列表,它包含了表中所有值,并指明每一个值出现的位置。使用索引的优势在于可以快速的定位到某个值,从而快速的找到相关数据。 以下是索引优化的技…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部