以下是如何使用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
是端口号,user
和password
是用户名和密码,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中,我们可以使用UNION
关键字进行联合查询。以下是使用联合查询的基本语法:
cursor = db.cursor()
sql = """
SELECT name, age FROM students
UNION
SELECT course, score FROM scores
"""
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 name, age FROM students
UNION
SELECT course, score FROM scores
"""
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中使用联合查询,查询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 course, score FROM scores
"""
cursor.execute(sql5)
results = cursor.fetchall()
for row in results:
print(row)
db.close()
在上面的代码中,我们首先使用pymysql
模块连接到MySQL数据库。然后,我们创建一个cursor
对象,并使用execute
方法执行创建表和插入数据的语句。接着,我们使用execute
方法执行联合查询语句。最后,我们使用fetchall
方法获取查询结果,并使用for
循环遍历结果并打印出每一行数据。最后,我们使用close
方法关闭数据库连接。
以上是如何使用Python在MySQL中使用联合查询的完整使用攻略,包括连接MySQL数据库、创建表、插入数据、使用联合查询等步骤。同时,提供了两个示例以便更好理解如何使用Python在MySQL中使用联合查询。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用Python在MySQL中使用联合查询? - Python技术站