python如何查询数据库_如何使用python并行查询数据库

我有两个用于查询数据库的函数.假设有两个单独的查询,如何并行运行这些查询以查询相同的数据库,还等待两个结果返回,然后继续执行其余的代码?

def query1(param1, param2):

result = None

logging.info("Connecting to database...")

try:

conn = connect(host=host, port=port, database=db)

curs = conn.cursor()

curs.execute(query)

result = curs

curs.close()

conn.close()

except Exception as e:

logging.error("Unable to access database %s" % str(e))

return result

def query2(param1, param2):

result = None

logging.info("Connecting to database...")

try:

conn = connect(host=host, port=port, database=db)

curs = conn.cursor()

curs.execute(query)

result = curs

curs.close()

conn.close()

except Exception as e:

logging.error("Unable to access database %s" % str(e))

return result

最佳答案

这是一个多线程代码,可以完成您要完成的任务:

from threading import Thread, Lock

class DatabaseWorker(Thread):

__lock = Lock()

def __init__(self, db, query, result_queue):

Thread.__init__(self)

self.db = db

self.query = query

self.result_queue = result_queue

def run(self):

result = None

logging.info("Connecting to database...")

try:

conn = connect(host=host, port=port, database=self.db)

curs = conn.cursor()

curs.execute(self.query)

result = curs

curs.close()

conn.close()

except Exception as e:

logging.error("Unable to access database %s" % str(e))

self.result_queue.append(result)

delay = 1

result_queue = []

worker1 = DatabaseWorker("db1", "select something from sometable",

result_queue)

worker2 = DatabaseWorker("db1", "select something from othertable",

result_queue)

worker1.start()

worker2.start()

# Wait for the job to be done

while len(result_queue) < 2:

sleep(delay)

job_done = True

worker1.join()

worker2.join()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值