以下是一个使用 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 工具等,以便更好地管理数据库连接和并发访问。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!