繁体   English   中英

合并多个mysql连接时出现问题

[英]Issue in pooling multiple mysql connection

我尝试实现mysql池,但是有一个问题:我正在从env变量解析mysql连接凭据,该变量基本上是一个字典,并且具有多个数据库凭据。

   dict={'db1': {'username':**** ,'password':**** ,'database':*****,'host':****,'uri': mysql url with username ,password,database}, 
         'db2': {'username': ****, 'hostname': *****,host: ******, 'password': ***,'uri': mysql url with username ,password,database}}

global conn
conn={}
def connect():
 cred=json.loads(os.environ['dict'])
 for db in cred:
   multiple_databases=cred[db]['uri']
   url=urlparse.urlparse(multile_databases)           
   conn[db]={'user':'url.username','password':'url.password','host':'url.hostname','database':'url.path[1:]'}
   cnx = mysql.connector.connect(pool_name = "mypool",
                          pool_size = 3,
                          **conn[db])
connect()

这里的问题是只有一个连接被打开,并且是针对数据库“ db2”的。

当我执行相同的代码而不实现池时,两个连接都可以正常工作/打开。

  for db in cred:
   multiple_databases=cred[db]['uri']
   url=urlparse.urlparse(multile_databases)           
   conn[db]=mysql.connector.connect(user=url.username,password=url.password,host=url.hostname,database=url.path[1:])

问题:实施池时,为什么两个连接都未打开?

弄清楚了

def conn1():
 pool_size = 3
ser=json.loads(os.environ['dict'])
for db in ser:
  instance_1=ser[db]['uri']
  url=urlparse.urlparse(instance_1)
  pool[db]=PooledDB(mysql.connector, pool_size, user=url.username, password=url.password, host=url.hostname, database=url.path[1:])
  cnx=[None,]*pool_size
  for i in xrange(0,pool_size):
 cnx[i]=pool[db].connection()
 cursor=cnx[i].cursor()
 cursor.execute('SELECT CONNECTION_ID()')
 print "Cnx %d has ID %d" % (i+1,cursor.fetchone()[0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM