summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/firebird.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-06-28 19:03:29 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-06-28 19:03:29 +0000
commit5c0e32bf33a5db32c1beabc0fadb4ddd1fbd24be (patch)
tree20b4c7793a3d6c6dcf07d993718bf2a1c1cdc859 /lib/sqlalchemy/databases/firebird.py
parent70b2dec19a9d5f2dd163704e58f38f2f82e5bf45 (diff)
downloadsqlalchemy-5c0e32bf33a5db32c1beabc0fadb4ddd1fbd24be.tar.gz
firebird patch with support for type_conv
Diffstat (limited to 'lib/sqlalchemy/databases/firebird.py')
-rw-r--r--lib/sqlalchemy/databases/firebird.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py
index 3eb287d9c..42779e8ff 100644
--- a/lib/sqlalchemy/databases/firebird.py
+++ b/lib/sqlalchemy/databases/firebird.py
@@ -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,7 +21,8 @@ except:
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):
@@ -99,8 +100,21 @@ class FireBirdExecutionContext(default.DefaultExecutionContext):
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 @@ class FireBirdDialect(ansisql.ANSIDialect):
del opts['port']
self.opts = opts
- print "opts %r" % self.opts
return ([], self.opts)
def connect_args(self):
@@ -195,11 +208,9 @@ class FireBirdDialect(ansisql.ANSIDialect):
#import pdb;pdb.set_trace()
# get all of the fields for this table
c = connection.execute(tblqry, [table.name.upper()])
- found_table = False
while True:
row = c.fetchone()
if not row: break
- found_table = True
args = [row['FNAME']]
kw = {}
# get the data types and lengths
@@ -210,9 +221,6 @@ class FireBirdDialect(ansisql.ANSIDialect):
# is it a primary key?
table.append_item(schema.Column(*args, **kw))
# does the field have indexes
-
- if not found_table:
- raise exceptions.NoSuchTableError(table.name)
def last_inserted_ids(self):
return self.context.last_inserted_ids