以下是一个使用 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 工具等,以便更好地管理数据库连接和并发访问。