summaryrefslogtreecommitdiff
path: root/bin/sql_db.py
diff options
context:
space:
mode:
authorMantavya Gajjar <mga@tinyerp.com>2009-11-26 17:06:53 +0530
committerMantavya Gajjar <mga@tinyerp.com>2009-11-26 17:06:53 +0530
commitbbe48761e4d9c6d9844bae92dac61afc7ec0ce99 (patch)
tree180fa5b70de5c2c518e0ecf0079c02c643e6e109 /bin/sql_db.py
parentd365fbeb13fe41e30535d0bdbbdbca969ca818f2 (diff)
parentb7f7fdefaf58ef3e183a450b68a8796ca2bdaf24 (diff)
[MERGE]: merging from the same branch
bzr revid: mga@tinyerp.com-20091126113653-0ym60nvtjinvp82h
Diffstat (limited to 'bin/sql_db.py')
-rw-r--r--bin/sql_db.py34
1 files changed, 20 insertions, 14 deletions
diff --git a/bin/sql_db.py b/bin/sql_db.py
index 48e0c9bb58f..f04c9682817 100644
--- a/bin/sql_db.py
+++ b/bin/sql_db.py
@@ -59,10 +59,12 @@ re_from = re.compile('.* from "?([a-zA-Z_0-9]+)"? .*$');
re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$');
-def log(msg, lvl=netsvc.LOG_DEBUG):
+def log(msg, lvl=netsvc.LOG_DEBUG2):
logger = netsvc.Logger()
logger.notifyChannel('sql', lvl, msg)
+sql_counter = 0
+
class Cursor(object):
IN_MAX = 1000
@@ -70,7 +72,7 @@ class Cursor(object):
@wraps(f)
def wrapper(self, *args, **kwargs):
if self.__closed:
- raise psycopg2.ProgrammingError('Unable to use the cursor after having closing it')
+ raise psycopg2.ProgrammingError('Unable to use the cursor after having closed it')
return f(self, *args, **kwargs)
return wrapper
@@ -111,7 +113,7 @@ class Cursor(object):
def execute(self, query, params=None):
if '%d' in query or '%f' in query:
log(query, netsvc.LOG_WARNING)
- log("SQL queries mustn't contain %d or %f anymore. Use only %s", netsvc.LOG_WARNING)
+ log("SQL queries cannot contain %d or %f anymore. Use only %s", netsvc.LOG_WARNING)
if params:
query = query.replace('%d', '%s').replace('%f', '%s')
@@ -121,6 +123,10 @@ class Cursor(object):
try:
params = params 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))
+ raise
except Exception, e:
log("bad query: %s" % self._obj.query)
log(e)
@@ -142,22 +148,22 @@ class Cursor(object):
return res
def print_log(self):
+ global sql_counter
+ sql_counter += self.sql_log_count
if not self.sql_log:
return
-
def process(type):
sqllogs = {'from':self.sql_from_log, 'into':self.sql_into_log}
- if not sqllogs[type]:
- return
- sqllogitems = sqllogs[type].items()
- sqllogitems.sort(key=lambda k: k[1][1])
sum = 0
- log("SQL LOG %s:" % (type,))
- for r in sqllogitems:
- log("table: %s: %s/%s" %(r[0], str(r[1][1]), r[1][0]))
- sum+= r[1][1]
- log("SUM:%s/%d" % (sum, self.sql_log_count))
- sqllogs[type].clear()
+ if sqllogs[type]:
+ sqllogitems = sqllogs[type].items()
+ sqllogitems.sort(key=lambda k: k[1][1])
+ log("SQL LOG %s:" % (type,))
+ for r in sqllogitems:
+ log("table: %s: %s/%s" %(r[0], str(r[1][1]), r[1][0]))
+ sum+= r[1][1]
+ sqllogs[type].clear()
+ log("SUM %s:%s/%d [%d]" % (type, sum, self.sql_log_count,sql_counter))
process('from')
process('into')
self.sql_log_count = 0