Python多线程查询mysql数据库

2023年 8月 12日 61.9k 0

以下是一个使用 Python 多线程查询 MySQL 数据库的示例代码:

import threading
import pymysql

class DBThread(threading.Thread):
def __init__(self, query):
super(DBThread, self).__init__()
self.query = query

def run(self):
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='testdb',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
with conn.cursor() as cursor:
cursor.execute(self.query)
result = cursor.fetchall()
print(result)
finally:
conn.close()

def main():
queries = [
'SELECT * FROM table1',
'SELECT * FROM table2',
'SELECT * FROM table3',
# ...
]
threads = []
for query in queries:
thread = DBThread(query)
thread.start()
threads.append(thread)
for thread in threads:
thread.join()

if __name__ == '__main__':
main()

在这个示例中,我们定义了一个继承自 threading.Thread 的类 DBThread,它接受一个查询语句 query,连接 MySQL 数据库,并执行查询语句。在主程序中,我们定义了查询语句列表 queries,创建了线程列表 threads,并使用 DBThread 类创建线程,并启动和加入线程列表。最后,我们使用 join() 方法等待所有线程执行完成。

需要注意的是,在多线程查询数据库时,需要考虑数据库连接池等性能优化,以避免出现连接泄露等问题。同时,在使用多线程查询数据库时,还需要注意数据库锁和并发访问等问题,以避免出现死锁等情况。因此,在实际开发中,建议使用现成的数据库连接池和 ORM 工具等,以便更好地管理数据库连接和并发访问。

相关文章

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

发布评论