python多线程写入数据库

2023年 8月 12日 29.9k 0

在 Python 中,可以使用多线程来实现数据写入数据库的任务,从而提高写入效率。以下是一个简单的多线程写入数据库示例代码:

import sqlite3
import threading
import time

# 定义数据库名称和表名称
db_name = 'test.db'
table_name = 'data'

# 定义数据列表
data_list = [(i,) for i in range(100)]

# 定义线程数量
num_threads = 4

# 创建数据库连接和游标对象
conn = sqlite3.connect(db_name)
cursor = conn.cursor()

# 创建数据表
cursor.execute('CREATE TABLE IF NOT EXISTS {} (id INTEGER PRIMARY KEY)'.format(table_name))

# 定义线程函数
def write_thread(data):
cursor.executemany('INSERT INTO {} (id) VALUES (?)'.format(table_name), data)
conn.commit()

# 创建线程列表并启动
threads = []
for i in range(num_threads):
start = int(len(data_list) / num_threads * i)
end = int(len(data_list) / num_threads * (i+1))
thread = threading.Thread(target=write_thread, args=(data_list[start:end],))
thread.start()
threads.append(thread)

# 等待线程执行完成
for thread in threads:
thread.join()

# 关闭数据库连接
conn.close()

print('写入完成')

在这个示例中,我们首先定义了数据库名称和表名称,并创建了一个数据列表用于写入数据库。然后定义了线程数量 num_threads,并创建了数据库连接和游标对象用于操作数据库。

在线程函数 write_thread 中,我们使用 executemany 方法向数据库中写入数据,并使用 commit 方法提交事务。需要注意的是,不同的线程写入的数据应该不重叠,因此需要根据线程编号来划分数据块。

在主程序中,我们首先创建线程列表并启动,然后使用 join() 方法等待线程执行完成,并在所有线程执行完成后输出写入完成的信息。

需要注意的是,在使用多线程写入数据库时,需要确保线程之间不会出现数据竞争等问题,可以使用锁机制来实现线程同步。同时,在写入大量数据时,也需要注意内存占用等问题。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论