Fixes in sqlalchemy for use normal queries, without pool

This commit is contained in:
Antonio de la Rosa 2018-03-08 22:38:34 +01:00
parent e99ad98362
commit 23d02e3636
2 changed files with 90 additions and 58 deletions

View file

@ -5,8 +5,6 @@ import MySQLdb.cursors
import sqlalchemy.pool as pool import sqlalchemy.pool as pool
import traceback import traceback
mypool=None
class SqlClass: class SqlClass:
def __init__(self, connection): def __init__(self, connection):
@ -24,42 +22,43 @@ class SqlClass:
def connect(self): def connect(self):
global mypool """
if self.conn==None: if self.conn==None:
try: """
def getconn(): try:
return MySQLdb.connect(self.connection['host'],
user=self.connection['user'],
passwd=self.connection['password'],
db=self.connection['db'],
charset='utf8mb4',
cursorclass=MySQLdb.cursors.DictCursor)
if mypool==None:
mypool=pool.QueuePool(getconn, max_overflow=self.max_overflow, pool_size=self.pool_size, recycle=self.pool_recycle, use_threadlocal=False)
self.conn=mypool.connect() def getconn():
return MySQLdb.connect(self.connection['host'],
self.conn.ping(True) user=self.connection['user'],
passwd=self.connection['password'],
db=self.connection['db'],
charset='utf8mb4',
cursorclass=MySQLdb.cursors.DictCursor)
"""
if mypool==None:
""" mypool=pool.QueuePool(getconn, max_overflow=self.max_overflow, pool_size=self.pool_size, recycle=self.pool_recycle, use_threadlocal=False)
while not self.conn.open: """
self.conn=SqlClass.mypool.connect() self.conn=getconn() #mypool.connect()
"""
self.connected=True
except: self.conn.ping(True)
e = sys.exc_info()[0]
v = sys.exc_info()[1] """
while not self.conn.open:
self.conn=SqlClass.mypool.connect()
"""
self.connected=True
self.error_connection="Error in connection: %s %s" % (e, v) except:
e = sys.exc_info()[0]
v = sys.exc_info()[1]
self.conn.close() self.error_connection="Error in connection: %s %s" % (e, v)
raise NameError(self.error_connection) self.conn.close()
raise NameError(self.error_connection)
#Make def query more simple if not debugging. #Make def query more simple if not debugging.

View file

@ -14,6 +14,8 @@ engine=None
class SqlClass: class SqlClass:
cursors_connect=None cursors_connect=None
disable_pool=False
pymysql_install=False
def __init__(self, connection): def __init__(self, connection):
@ -28,37 +30,68 @@ class SqlClass:
self.pool_recycle=3600 self.pool_recycle=3600
self.connect() self.connect()
def connect(self): def connect(self):
global engine global engine
if not engine: if not SqlClass.disable_pool:
try:
if self.connection['db_type']=='pymysql':
import pymysql.cursors
SqlClass.cursors_connect=pymysql.cursors.DictCursor
else:
import MySQLdb.cursors
SqlClass.cursors_connect=MySQLdb.cursors.DictCursor
engine=create_engine("mysql+%s://%s:%s@%s/%s?charset=utf8mb4" % (self.connection['db_type'], self.connection['user'], self.connection['password'], self.connection['host'], self.connection['db']), pool_recycle=self.pool_recycle, echo_pool=True, pool_size=self.pool_size)
except:
e = sys.exc_info()[0]
v = sys.exc_info()[1]
self.error_connection="Error in connection: %s %s" % (e, v)
#self.conn.close()
raise NameError(self.error_connection)
self.conn=engine.raw_connection()
if not engine:
try:
if self.connection['db_type']=='pymysql':
import pymysql.cursors
SqlClass.cursors_connect=pymysql.cursors.DictCursor
else:
import MySQLdb.cursors
SqlClass.cursors_connect=MySQLdb.cursors.DictCursor
engine=create_engine("mysql+%s://%s:%s@%s/%s?charset=utf8mb4" % (self.connection['db_type'], self.connection['user'], self.connection['password'], self.connection['host'], self.connection['db']), pool_recycle=self.pool_recycle, echo_pool=True, pool_size=self.pool_size)
except:
e = sys.exc_info()[0]
v = sys.exc_info()[1]
self.error_connection="Error in connection: %s %s" % (e, v)
#self.conn.close()
raise NameError(self.error_connection)
self.conn=engine.raw_connection()
else:
if self.connection['db_type']=='pymysql':
import pymysql.cursors
if not SqlClass.pymysql_install:
pymysql.install_as_MySQLdb
SqlClass.pymysql_install=True
self.conn=pymysql.connect(self.connection['host'],
user=self.connection['user'],
passwd=self.connection['password'],
db=self.connection['db'],
charset='utf8mb4',
cursorclass=MySQLdb.cursors.DictCursor)
else:
import MySQLdb.cursors
self.conn=MySQLdb.connect(self.connection['host'],
user=self.connection['user'],
passwd=self.connection['password'],
db=self.connection['db'],
charset='utf8mb4',
cursorclass=MySQLdb.cursors.DictCursor)
pass pass
""" """
@ -168,7 +201,7 @@ class SqlClass:
if self.conn: if self.conn:
self.conn.close() self.conn.close()
#self.conn=None self.conn=None
pass pass