diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/firebird/base.py')
-rw-r--r-- | lib/sqlalchemy/dialects/firebird/base.py | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lib/sqlalchemy/dialects/firebird/base.py b/lib/sqlalchemy/dialects/firebird/base.py index 5cc837848..4d081025e 100644 --- a/lib/sqlalchemy/dialects/firebird/base.py +++ b/lib/sqlalchemy/dialects/firebird/base.py @@ -72,6 +72,7 @@ from sqlalchemy.sql import expression from sqlalchemy.engine import base, default, reflection from sqlalchemy.sql import compiler + from sqlalchemy.types import (BIGINT, BLOB, BOOLEAN, CHAR, DATE, FLOAT, INTEGER, NUMERIC, SMALLINT, TEXT, TIME, TIMESTAMP, VARCHAR) @@ -176,6 +177,8 @@ class FBTypeCompiler(compiler.GenericTypeCompiler): return "BLOB SUB_TYPE 0" + + class FBCompiler(sql.compiler.SQLCompiler): """Firebird specific idiosincrasies""" @@ -280,16 +283,6 @@ class FBDDLCompiler(sql.compiler.DDLCompiler): return "DROP GENERATOR %s" % self.preparer.format_sequence(drop.element) -class FBDefaultRunner(base.DefaultRunner): - """Firebird specific idiosincrasies""" - - def visit_sequence(self, seq): - """Get the next value from the sequence using ``gen_id()``.""" - - return self.execute_string("SELECT gen_id(%s, 1) FROM rdb$database" % \ - self.dialect.identifier_preparer.format_sequence(seq)) - - class FBIdentifierPreparer(sql.compiler.IdentifierPreparer): """Install Firebird specific reserved words.""" @@ -298,7 +291,13 @@ class FBIdentifierPreparer(sql.compiler.IdentifierPreparer): def __init__(self, dialect): super(FBIdentifierPreparer, self).__init__(dialect, omit_schema=True) +class FBExecutionContext(default.DefaultExecutionContext): + def fire_sequence(self, seq): + """Get the next value from the sequence using ``gen_id()``.""" + return self._execute_scalar("SELECT gen_id(%s, 1) FROM rdb$database" % \ + self.dialect.identifier_preparer.format_sequence(seq)) + class FBDialect(default.DefaultDialect): """Firebird dialect""" @@ -316,10 +315,10 @@ class FBDialect(default.DefaultDialect): statement_compiler = FBCompiler ddl_compiler = FBDDLCompiler - defaultrunner = FBDefaultRunner preparer = FBIdentifierPreparer type_compiler = FBTypeCompiler - + execution_ctx_cls = FBExecutionContext + colspecs = colspecs ischema_names = ischema_names |