summaryrefslogtreecommitdiff
path: root/bin/sql_db.py
diff options
context:
space:
mode:
authorChristophe Simonis <christophe@tinyerp.com>2008-12-09 14:31:32 +0100
committerChristophe Simonis <christophe@tinyerp.com>2008-12-09 14:31:32 +0100
commit822da77ee66b6d7e36ab100fa30ee8ee397c15bc (patch)
tree3c122b960f23362fd693c22212476bfe6b191b76 /bin/sql_db.py
parentc2cc3a304996fd1a7208b8e0570eef435682e75f (diff)
[FIX] psycopg2: convert types & update web_services
bzr revid: christophe@tinyerp.com-20081209133132-wn7v8d2qyo3cv6x5
Diffstat (limited to 'bin/sql_db.py')
-rw-r--r--bin/sql_db.py35
1 files changed, 31 insertions, 4 deletions
diff --git a/bin/sql_db.py b/bin/sql_db.py
index e52b94d89fa..ccf57d0c718 100644
--- a/bin/sql_db.py
+++ b/bin/sql_db.py
@@ -28,6 +28,21 @@ from psycopg2.psycopg1 import cursor as psycopg1cursor
import psycopg2.extensions
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
+types_mapping = {
+ 'date': (1082,),
+ 'time': (1083,),
+ 'datetime': (1114,),
+}
+
+def undecimalize(symb, cr):
+ if symb is None: return None
+ return float(symb)
+
+for name, typeoid in types_mapping.items():
+ psycopg2.extensions.register_type(psycopg2.extensions.new_type(typeoid, name, lambda x, cr: x))
+psycopg2.extensions.register_type(psycopg2.extensions.new_type((700, 701, 1700,), 'float', undecimalize))
+
+
import tools
import re
@@ -64,16 +79,19 @@ class Cursor(object):
query = base_string(query)
if '%d' in query or '%f' in query:
- log(queyr, netsvc.LOG_WARNING)
+ #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)
- query = query.replace('%d', '%s').replace('%f', '%s')
+ if p:
+ query = query.replace('%d', '%s').replace('%f', '%s')
if self.sql_log:
now = mdt.now()
log("SQL LOG query: %s" % (query,))
log("SQL LOG params: %r" % (p,))
- res = self._obj.execute(query, p)
+ res = self._obj.execute(query, p or None)
if self.sql_log:
self.count+=1
@@ -103,7 +121,7 @@ class Cursor(object):
log("SUM:%s/%d" % (sum, self.count))
def close(self):
- if self.sql_log:
+ if self.sql_from_log or self.sql_into_log:
self.print_log('from')
self.print_log('into')
self._obj.close()
@@ -166,8 +184,17 @@ class PoolManager(object):
return PoolManager._pools[db_name]
get = staticmethod(get)
+ def close(db_name):
+ if db_name is PoolManager._pools:
+ PoolManager._pools[db_name].closeall()
+ del PoolManager._pools[db_name]
+ close = staticmethod(close)
+
def db_connect(db_name, serialize=0):
return PoolManager.get(db_name)
+def close_db(db_name):
+ return PoolManager.close(db_name)
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: