Fixed bug closing connections to sql server

This commit is contained in:
Antonio de la Rosa 2016-12-27 17:55:46 +01:00
parent 8928c3e307
commit 6161ea2c3e
5 changed files with 91 additions and 70 deletions

View file

@ -115,7 +115,13 @@ def get_session():
if os.path.isfile(path_cookie):
with open(path_cookie) as f:
s=json.loads(f.read())
json_txt=f.read()
if(json_txt).strip()!='':
s=json.loads(json_txt)
else:
s={'token': cookie}
else:
s={'token': cookie}

View file

@ -19,40 +19,43 @@ class SqlClass:
# Sql connection
self.conn=None
self.connected=False
#self.connection_method=self.connect_to_db_sql
self.caching=False
try:
def getconn():
return MySQLdb.connect(connection['host'],
user=connection['user'],
passwd=connection['password'],
db=connection['db'],
charset='utf8mb4',
cursorclass=MySQLdb.cursors.DictCursor)
def connect(self):
if SqlClass.mypool==None:
SqlClass.mypool=pool.QueuePool(getconn, max_overflow=self.max_overflow, pool_size=self.pool_size)
if self.conn==None:
try:
def getconn():
return MySQLdb.connect(self.connection['host'],
user=self.connection['user'],
passwd=self.connection['password'],
db=self.connection['db'],
charset='utf8mb4',
cursorclass=MySQLdb.cursors.DictCursor)
self.conn=SqlClass.mypool.connect()
if SqlClass.mypool==None:
SqlClass.mypool=pool.QueuePool(getconn, max_overflow=self.max_overflow, pool_size=self.pool_size)
self.conn.ping(True)
self.conn=SqlClass.mypool.connect()
self.connected=True
self.conn.ping(True)
except:
e = sys.exc_info()[0]
v = sys.exc_info()[1]
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.error_connection="Error in connection: %s %s" % (e, v)
raise NameError(self.error_connection)
#return False
raise NameError(self.error_connection)
#Make def query more simple if not debugging.
def query(self, sql_query, arguments=[], name_connection="default"):
self.connect()
#if fetch_type=="ASSOC":
#fetch_type=MySQLdb.cursors.DictCursor
@ -83,17 +86,19 @@ class SqlClass:
#def fetch(self, cursor):
#return cursor.fetchone()
"""
def __del__(self):
self.close()
"""
if self.conn:
self.conn.close()
def close(self, name_connection="default"):
if self.conn:
self.conn.close()
#self.conn=False
self.conn=None
pass

View file

@ -20,40 +20,43 @@ class SqlClass:
# Sql connection
self.conn=None
self.connected=False
#self.connection_method=self.connect_to_db_sql
self.caching=False
try:
def getconn():
return pymysql.connect(connection['host'],
user=connection['user'],
passwd=connection['password'],
db=connection['db'],
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
def connect(self):
if SqlClass.mypool==None:
SqlClass.mypool=pool.QueuePool(getconn, max_overflow=self.max_overflow, pool_size=self.pool_size)
if self.conn==None:
try:
def getconn():
return pymysql.connect(self.connection['host'],
user=self.connection['user'],
passwd=self.connection['password'],
db=self.connection['db'],
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
self.conn=SqlClass.mypool.connect()
if SqlClass.mypool==None:
SqlClass.mypool=pool.QueuePool(getconn, max_overflow=self.max_overflow, pool_size=self.pool_size)
self.conn.ping(True)
self.conn=SqlClass.mypool.connect()
self.connected=True
self.conn.ping(True)
except:
e = sys.exc_info()[0]
v = sys.exc_info()[1]
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.error_connection="Error in connection: %s %s" % (e, v)
raise NameError(self.error_connection)
#return False
raise NameError(self.error_connection)
#Make def query more simple if not debugging.
def query(self, sql_query, arguments=[], name_connection="default"):
self.connect()
#if fetch_type=="ASSOC":
#fetch_type=pymysql.cursors.DictCursor

View file

@ -5,7 +5,7 @@ import re
import uuid
from importlib import import_module, reload
from collections import OrderedDict
from paramecio.cromosoma.databases.pymysql import SqlClass
from paramecio.cromosoma.databases.mysqldb import SqlClass
from paramecio.cromosoma.coreforms import BaseForm, HiddenForm
import copy
import traceback
@ -141,9 +141,11 @@ class PhangoField:
def create_form(self):
#self.name, self.default_value,
self.extra_parameters.insert(0, self.name)
self.extra_parameters.insert(1, self.default_value)
form=self.name_form(*self.extra_parameters)
final_parameters=copy.copy(self.extra_parameters)
final_parameters.insert(0, self.name)
final_parameters.insert(1, self.default_value)
form=self.name_form(*final_parameters)
form.default_value=self.default_value
form.required=self.required
form.label=self.label
@ -240,9 +242,11 @@ class WebModel:
def __init__(self, sqlclass, name_field_id="id"):
cached=self.global_cached
self.cached=self.global_cached
cached_runquery=self.global_cached
self.cached_runquery=self.global_cached
self.type_cache='file'
#The name of the table
@ -347,7 +351,7 @@ class WebModel:
self.fields[field_model.name].model=self
self.fields[field_model.name].required=required
#self.fields[field_model.name].required=required
self.fields[field_model.name].post_register()
@ -1071,6 +1075,8 @@ class WebModel:
def create_forms(self, arr_fields=[]):
self.forms={}
if len(arr_fields)==0:
arr_fields=list(self.fields.keys())

View file

@ -65,7 +65,10 @@ for k, v in menu.items():
def home(module='', submodule=''):
# A simple boolean used for show or not the code of admin module in standard template
connection=WebModel.connection()
user_admin=UserAdmin(connection)
#Fix, make local variable
t=PTemplate(env)
@ -81,8 +84,6 @@ def home(module='', submodule=''):
#check if login
user_admin=UserAdmin(connection)
s=get_session()
if check_login():