Python sqlite3一次插入多条数据
SQLite是一种轻量级的嵌入式关系型数据库,而Python自带的sqlite3库则提供了与SQLite数据库交互的功能。在实际开发中,有时候需要一次性插入多条数据到数据库中,这样可以有效提高插入数据的效率。本文将介绍如何在Python中使用sqlite3一次插入多条数据。
创建数据库和表
首先,我们需要创建一个SQLite数据库和一张表。我们可以使用sqlite3库来实现这一步骤:
# 导入sqlite3库
import sqlite3
# 连接数据库(如果不存在则会自动创建)
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 创建一个表
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, email TEXT)''')
# 关闭数据库连接
conn.close()
运行上述代码后,我们在当前目录下会看到一个example.db
的文件,该文件即为我们创建的SQLite数据库。
使用executemany()方法插入多条数据
在SQLite中,可以使用executemany()
方法一次性插入多条数据到数据库。下面是一个示例代码,插入多条用户信息到users
表中:
# 导入sqlite3库
import sqlite3
# 用户信息列表
users = [
(1, 'Alice', 'alice@example.com'),
(2, 'Bob', 'bob@example.com'),
(3, 'Charlie', 'charlie@example.com')
]
# 连接数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 插入多条数据
c.executemany('INSERT INTO users VALUES (?, ?, ?)', users)
# 提交事务
conn.commit()
# 查询插入的数据
c.execute('SELECT * FROM users')
print(c.fetchall())
# 关闭数据库连接
conn.close()
运行上述代码后,我们可以看到插入的用户数据已经成功存储在users
表中。示例代码中使用了一个包含多个用户信息的列表users
,然后通过executemany()
方法一次性将所有用户信息插入到数据库中。
使用占位符和字符串格式化插入多条数据
除了executemany()
方法外,我们还可以使用占位符和字符串格式化来一次性插入多条数据。以下是一个示例代码:
# 导入sqlite3库
import sqlite3
# 用户信息列表
users = [
(4, 'David', 'david@example.com'),
(5, 'Eve', 'eve@example.com'),
(6, 'Frank', 'frank@example.com')
]
# 连接数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 准备sql语句
sql = 'INSERT INTO users VALUES (?, ?, ?)'
# 插入多条数据
for user in users:
c.execute(sql, user)
# 提交事务
conn.commit()
# 查询插入的数据
c.execute('SELECT * FROM users')
print(c.fetchall())
# 关闭数据库连接
conn.close()
运行上述代码后,同样可以看到插入的用户数据已经成功存储在users
表中。示例代码中使用了占位符?
和字符串格式化来构建插入语句,并通过循环的方式一次性插入多条数据。
使用with语句简化操作
为了简化代码和确保数据库连接的正确关闭,我们可以使用with
语句来操作数据库。以下是一个示例代码:
# 导入sqlite3库
import sqlite3
# 用户信息列表
users = [
(7, 'Grace', 'grace@example.com'),
(8, 'Henry', 'henry@example.com'),
(9, 'Ivy', 'ivy@example.com')
]
# 连接并操作数据库
with sqlite3.connect('example.db') as conn:
c = conn.cursor()
# 插入多条数据
c.executemany('INSERT INTO users VALUES (?, ?, ?)', users)
# 提交事务
conn.commit()
# 查询插入的数据
c.execute('SELECT * FROM users')
print(c.fetchall())
运行上述代码后,同样可以看到插入的用户数据已经成功存储在users
表中。示例代码中使用了with
语句来管理数据库连接,确保在退出代码块时正确关闭数据库连接。
通过以上示例代码,我们了解了在Python中如何使用sqlite3一次插入多条数据到数据库中。这种方式能够有效提高插入数据的效率,适用于需要批量插入数据的场景。