Python多线程查询mysql数据库

2023-02-27 00:00:00 查询 数据库 多线程

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

相关文章