summaryrefslogtreecommitdiff
path: root/bin/sql_db.py
diff options
context:
space:
mode:
authorP. Christeas <p_christ@hol.gr>2008-12-23 17:46:08 +0200
committerP. Christeas <p_christ@hol.gr>2008-12-23 17:46:08 +0200
commita8229141bc5af2f20624b4738be1715df5facd40 (patch)
tree5e946c168b57fc8f0c22283e32f0dc7e3db89f2c /bin/sql_db.py
parent0a91836a8e1926f5ec5323bbacb761a7d1a48abe (diff)
parentf4a6b51fb46c8a948ccc641324ec37dc1a4d6bb2 (diff)
Merge branch 'master' of openobject-server into mdv-gpl3-fwd
Conflicts: bin/netsvc.py bin/sql_db.py bin/ssl/SecureXMLRPCServer.py (note: fixes are lost now) bzr revid: p_christ@hol.gr-20081223154608-fs0830k7vyo81m5u
Diffstat (limited to 'bin/sql_db.py')
-rw-r--r--bin/sql_db.py36
1 files changed, 12 insertions, 24 deletions
diff --git a/bin/sql_db.py b/bin/sql_db.py
index ba5e3457df5..f9ae97b9163 100644
--- a/bin/sql_db.py
+++ b/bin/sql_db.py
@@ -82,7 +82,10 @@ class Cursor(object):
self._obj = self._cnx.cursor(cursor_factory=psycopg1cursor)
self.autocommit(False)
self.dbname = pool.dbname
-
+
+ from inspect import stack
+ self.__caller = tuple(stack()[2][1:3])
+
def __del__(self):
if hasattr(self, '_obj'):
# Oops. 'self' has not been closed explicitly.
@@ -90,36 +93,26 @@ class Cursor(object):
# but the database connection is not put back into the connection
# pool, preventing some operation on the database like dropping it.
# This can also lead to a server overload.
- log('Cursor not closed explicitly', netsvc.LOG_WARNING)
+ msg = "Cursor not closed explicitly\n" \
+ "Cursor was created at %s:%s" % self.__caller
+
+ log(msg, netsvc.LOG_WARNING)
self.close()
@check
def execute(self, query, params=None):
- if params is None:
- params=()
- if not isinstance(params, (tuple, list)):
- params = (params,)
-
- def base_string(s):
- if isinstance(s, unicode):
- return s.encode('utf-8')
- return s
- p=map(base_string, params)
- query = base_string(query)
-
+ self.count+=1
if '%d' in query or '%f' in query:
- #import traceback
- #traceback.print_stack()
log(query, netsvc.LOG_WARNING)
log("SQL queries mustn't containt %d or %f anymore. Use only %s", netsvc.LOG_WARNING)
- if p:
+ if params:
query = query.replace('%d', '%s').replace('%f', '%s')
if self.sql_log:
now = mdt.now()
try:
- res = self._obj.execute(query, p or None)
+ res = self._obj.execute(query, params)
except psycopg2.ProgrammingError, pe:
logger= netsvc.Logger()
logger.notifyChannel('sql_db', netsvc.LOG_ERROR, "Programming error: %s, in query %s" % (pe, query))
@@ -140,12 +133,6 @@ class Cursor(object):
self.sql_into_log[res_into.group(1)][1] += mdt.now() - now
return res
- def drop_view_if_exists(self, viewname):
- self._obj.execute("select count(1) from pg_class where relkind=%s and relname=%s", ('v', viewname,))
- if self._obj.fetchone()[0]:
- self._obj.execute("DROP view %s" % (viewname,))
- self._obj.commit()
-
def print_log(self):
def process(type):
sqllogs = {'from':self.sql_from_log, 'into':self.sql_into_log}
@@ -163,6 +150,7 @@ class Cursor(object):
process('from')
process('into')
self.count = 0
+ self.sql_log = False
@check
def close(self):