Python多线程查询mysql数据库
以下是一个使用 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 工具等,以便更好地管理数据库连接和并发访问。
相关文章