在pyodbc中同时并行运行n个游标上的n个进程,可以通过使用多线程来实现。下面是一个示例代码:
import pyodbc
import threading
# 创建数据库连接
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=testdb;UID=username;PWD=password')
# 定义一个函数,用于执行查询并打印结果
def execute_query(cursor, query):
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
print(row)
# 定义一个函数,用于创建并行运行的线程
def create_thread(cursor, query):
thread = threading.Thread(target=execute_query, args=(cursor, query))
thread.start()
# 创建游标列表和查询列表
cursors = []
queries = ["SELECT * FROM table1", "SELECT * FROM table2", "SELECT * FROM table3"]
# 创建并启动线程
for i in range(len(queries)):
cursor = conn.cursor()
cursors.append(cursor)
create_thread(cursor, queries[i])
# 等待所有线程执行完毕
for thread in threading.enumerate():
if thread != threading.current_thread():
thread.join()
# 关闭数据库连接
conn.close()
在上述代码中,我们首先创建了一个数据库连接,然后定义了一个execute_query
函数,用于执行查询并打印结果。接下来,我们定义了一个create_thread
函数,用于创建并行运行的线程。然后,我们创建了游标列表和查询列表,并使用create_thread
函数创建并启动了多个线程,每个线程对应一个游标和一个查询。最后,我们使用threading.enumerate()
方法等待所有线程执行完毕,并关闭数据库连接。
需要注意的是,pyodbc库本身是线程安全的,可以在多线程环境下使用。但是,在并行运行多个游标时,需要确保每个游标使用独立的连接和独立的事务,以避免数据混乱和并发问题。
领取专属 10元无门槛券
手把手带您无忧上云