diff options
| author | Christophe Simonis <christophe@tinyerp.com> | 2008-12-09 14:31:32 +0100 |
|---|---|---|
| committer | Christophe Simonis <christophe@tinyerp.com> | 2008-12-09 14:31:32 +0100 |
| commit | 822da77ee66b6d7e36ab100fa30ee8ee397c15bc (patch) | |
| tree | 3c122b960f23362fd693c22212476bfe6b191b76 /bin/sql_db.py | |
| parent | c2cc3a304996fd1a7208b8e0570eef435682e75f (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.py | 35 |
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: |
