Python批量写入MySQL
MySQL是一个开源的关系型数据库管理系统,而Python是一种简单易学的编程语言。将Python与MySQL结合使用,可以实现批量写入数据到MySQL数据库的功能。本文将介绍如何使用Python批量写入MySQL,并提供代码示例。
准备工作
在开始之前,需要确保已经安装Python和MySQL,并通过pip安装了PyMySQL库。可以使用以下命令安装PyMySQL库:
pip install PyMySQL
连接MySQL数据库
在开始写入数据之前,首先需要连接到MySQL数据库。可以使用PyMySQL库提供的connect()函数来建立与MySQL的连接。以下是一个连接到MySQL数据库的示例代码:
import pymysql
# 打开数据库连接
db = pymysql.connect(host='localhost', user='root', password='password', database='test')
# 创建一个游标对象
cursor = db.cursor()
在代码示例中,我们使用了localhost作为主机名,root作为用户名,password作为密码,并连接到名为test的数据库。根据实际情况,可以修改这些参数。
创建数据表
在将数据写入MySQL之前,需要先创建一个数据表。可以使用CREATE TABLE语句来创建数据表。以下是一个创建数据表的示例代码:
# 创建数据表
sql = '''
CREATE TABLE IF NOT EXISTS students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
age INT,
score FLOAT
)
'''
cursor.execute(sql)
在代码示例中,我们创建了一个名为students的数据表,该表包含id、name、age和score四个列。id列是主键,并设置为自动增长。根据需求,可以修改表的结构。
批量写入数据
创建完数据表后,就可以开始批量写入数据了。可以使用INSERT INTO语句来向数据表中插入数据。以下是一个批量写入数据的示例代码:
# 批量写入数据
data = [
('Alice', 18, 90.5),
('Bob', 19, 85.0),
('Cathy', 20, 92.5),
('David', 21, 88.0)
]
sql = 'INSERT INTO students (name, age, score) VALUES (%s, %s, %s)'
cursor.executemany(sql, data)
# 提交到数据库执行
db.commit()
在代码示例中,我们使用了executemany()函数来批量插入数据。data是一个包含多个元组的列表,每个元组表示一条数据记录。根据实际需求,可以修改data的内容。
关闭数据库连接
当完成数据写入后,应该关闭数据库连接,释放资源。可以使用close()方法来关闭数据库连接。以下是一个关闭数据库连接的示例代码:
# 关闭数据库连接
db.close()
完整代码示例
将上述代码片段整合在一起,得到完整的代码示例:
import pymysql
# 打开数据库连接
db = pymysql.connect(host='localhost', user='root', password='password', database='test')
# 创建一个游标对象
cursor = db.cursor()
# 创建数据表
sql = '''
CREATE TABLE IF NOT EXISTS students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
age INT,
score FLOAT
)
'''
cursor.execute(sql)
# 批量写入数据
data = [
('Alice', 18, 90.5),
('Bob', 19, 85.0),
('Cathy', 20, 92.5),
('David', 21, 88.0)
]
sql = 'INSERT INTO students (name, age, score) VALUES (%s, %s, %s)'
cursor.executemany(sql, data)
# 提交到数据库执行
db.commit()
# 关闭数据库连接
db.close()
类图
以下是使用mermaid语法标识的类图,表示本文中涉及的类之间的关系:
classDiagram
class PyMySQL {
+connect()
+escape_string()
+escape_sequence()
+connect()
+Writer()
+read_packet()
+write_packet()
+send_command()
+_send_data()
}
class pymysql.cursors.BaseCursor {
+execute()
+executemany()
+fetchone()
+fetchall()
}
class pymysql.connections.Connection {
+cursor()
+commit()
+close()
}
PyMySQL <-- pymysql.cursors