This patch adds support for kinterbasdb.init() args specified in the dburi

type_conv  (defaults to 200)
concurrency_level (defaults to 1)

usage would be like

dburi = firebird://sysdba:[EMAIL PROTECTED]:someport/path/database.gdb?type_conv=200&concurrency_level=1
Index: E:/prj/sqlalchemy/lib/sqlalchemy/databases/firebird.py
===================================================================
--- E:/prj/sqlalchemy/lib/sqlalchemy/databases/firebird.py      (revision 1577)
+++ E:/prj/sqlalchemy/lib/sqlalchemy/databases/firebird.py      (working copy)
@@ -5,7 +5,7 @@
 # the MIT License: http://www.opensource.org/licenses/mit-license.php
 
 
-import sys, StringIO, string
+import sys, StringIO, string, types
 
 import sqlalchemy.engine.default as default
 # import sqlalchemy.sql as sql
@@ -21,8 +21,9 @@
         
 dbmodule = kinterbasdb
         
-kinterbasdb.init(200)    # fix this, init args should be passable via db_uri
+_initialized_kb = False        
 
+
 class FBNumeric(sqltypes.Numeric):
     def get_col_spec(self):
         return "NUMERIC(%(precision)s, %(length)s)" % {'precision': 
self.precision, 'length' : self.length}
@@ -99,8 +100,21 @@
         
 class FireBirdDialect(ansisql.ANSIDialect):
     def __init__(self, module = None, **params):
+        global _initialized_kb
         self.module = module or dbmodule
         self.opts = {}
+        
+        if not _initialized_kb:
+            _initialized_kb = True
+            type_conv = params.get('type_conv', 200) or 200
+            if isinstance(type_conv, types.StringTypes):
+                type_conv = int(type_conv)
+                
+            concurrency_level = params.get('concurrency_level', 1) or 1
+            if isinstance(concurrency_level, types.StringTypes):
+                concurrency_level = int(concurrency_level)
+            
+            kinterbasdb.init(type_conv=type_conv, 
concurrency_level=concurrency_level)
         ansisql.ANSIDialect.__init__(self, **params)
 
     def create_connect_args(self, url):
@@ -111,7 +125,6 @@
             del opts['port']
         self.opts = opts
         
-        print "opts %r" % self.opts
         return ([], self.opts)
 
     def connect_args(self):
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to