python 并发访问数据库_python中实现多协程并发查询数据库

本文通过Python的gevent模块实现并发查询数据库,避免了多线程中可能的数据错乱问题。首先执行SQL获取数据,然后将数据按四部分划分,分别用协程创建users。最后展示运行时间。
摘要由CSDN通过智能技术生成

使用python中协程中的gevent模块实现并发查询数据库。

考虑过用多线程,但线程之间共享全局变量,可能会出现数据错乱问题,故使用多协程。

import time

import gevent

from py2neo import Node

from RDPlatform.common.sqlSentence import exe_sql_all

from RDPlatform.settings import graph

# 开始时间

start_time = time.time()

list1 = []

sql1 = "select id ,username from rdsystem_user"

row1 = exe_sql_all(sql1)

n=len(row1)

# print(n)

m = n // 4

r1 = []

r2 = []

r3 = []

r4 = []

for j in row1:

i = row1.index(j) + 1

if i <= m:

r1.append(j)

if i > m and i <= m * 2:

r2.append(j)

if i > m * 2 and i <= m * 3:

r3.append(j)

if i > m * 3 and i <= n:

r4.append(j)

# print(len(r1), len(r2), len(r3), len(r4))

# 使用协程

gevent.joinall([

gevent.spawn(createusers, r1),

gevent.spawn(createusers, r2),

gevent.spawn(createusers, r3),

gevent.spawn(createusers, r4),

])

for r in row1:

sql_id = str(r[0])

username = r[1]

list1.append({

'sql_id':sql_id,

'username':username

})

# 结束时间

stop_time = time.time()

print('run time is %s' % (stop_time - start_time))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值