]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
removed the "create_execution_context()" method from dialects and replaced
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Dec 2008 23:02:45 +0000 (23:02 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Dec 2008 23:02:45 +0000 (23:02 +0000)
with a more succinct "dialect.execution_ctx_cls" member

12 files changed:
lib/sqlalchemy/databases/access.py
lib/sqlalchemy/databases/firebird.py
lib/sqlalchemy/databases/informix.py
lib/sqlalchemy/databases/maxdb.py
lib/sqlalchemy/databases/mssql.py
lib/sqlalchemy/databases/mysql.py
lib/sqlalchemy/databases/oracle.py
lib/sqlalchemy/databases/postgres.py
lib/sqlalchemy/databases/sqlite.py
lib/sqlalchemy/databases/sybase.py
lib/sqlalchemy/engine/base.py
lib/sqlalchemy/engine/default.py

index b43aeb490a806d4a4dfe1799cdfe3abd590bc1ab..b5adc201526ad959f0e8600297f26d2f86fcc9e8 100644 (file)
@@ -209,9 +209,6 @@ class AccessDialect(default.DefaultDialect):
             connectors.append("PWD=%s" % opts.get("password", ""))
         return [[";".join(connectors)], {}]
 
-    def create_execution_context(self, *args, **kwargs):
-        return AccessExecutionContext(self, *args, **kwargs)
-
     def last_inserted_ids(self):
         return self.context.last_inserted_ids
 
@@ -425,3 +422,4 @@ dialect.schemagenerator = AccessSchemaGenerator
 dialect.schemadropper = AccessSchemaDropper
 dialect.preparer = AccessIdentifierPreparer
 dialect.defaultrunner = AccessDefaultRunner
+dialect.execution_ctx_cls = AccessExecutionContext
\ No newline at end of file
index 7c7d4793be81fef75acfa7b18d597877ff7db72b..c42a2c7f5cde951740ca14fd9f0d2cc47ea48cd9 100644 (file)
@@ -302,9 +302,6 @@ class FBDialect(default.DefaultDialect):
             self.dbapi.init(type_conv=type_conv, concurrency_level=concurrency_level)
         return ([], opts)
 
-    def create_execution_context(self, *args, **kwargs):
-        return FBExecutionContext(self, *args, **kwargs)
-
     def type_descriptor(self, typeobj):
         return sqltypes.adapt_type(typeobj, colspecs)
 
@@ -768,3 +765,4 @@ dialect.schemagenerator = FBSchemaGenerator
 dialect.schemadropper = FBSchemaDropper
 dialect.defaultrunner = FBDefaultRunner
 dialect.preparer = FBIdentifierPreparer
+dialect.execution_ctx_cls = FBExecutionContext
\ No newline at end of file
index 27554d37e3cf0b359a68379c2abfad3fa87d61d2..2a9327cf582b78ca5a47da8f8facbbe2125c06a3 100644 (file)
@@ -239,9 +239,6 @@ class InfoDialect(default.DefaultDialect):
 
         return ([dsn], opt)
 
-    def create_execution_context(self , *args, **kwargs):
-        return InfoExecutionContext(self, *args, **kwargs)
-
     def table_names(self, connection, schema):
         s = "select tabname from systables"
         return [row[0] for row in connection.execute(s)]
@@ -493,3 +490,4 @@ dialect.statement_compiler = InfoCompiler
 dialect.schemagenerator = InfoSchemaGenerator
 dialect.schemadropper = InfoSchemaDropper
 dialect.preparer = InfoIdentifierPreparer
+dialect.execution_ctx_cls = InfoExecutionContext
\ No newline at end of file
index 0e7310ab6086704ae4fb31e18e330e13a35562e8..dbe04f5914402b9a377c815d65f8092a738f915d 100644 (file)
@@ -514,9 +514,6 @@ class MaxDBDialect(default.DefaultDialect):
         else:
             return sqltypes.adapt_type(typeobj, colspecs)
 
-    def create_execution_context(self, connection, **kw):
-        return MaxDBExecutionContext(self, connection, **kw)
-
     def do_execute(self, cursor, statement, parameters, context=None):
         res = cursor.execute(statement, parameters)
         if isinstance(res, int) and context is not None:
@@ -1099,3 +1096,4 @@ dialect.statement_compiler = MaxDBCompiler
 dialect.schemagenerator = MaxDBSchemaGenerator
 dialect.schemadropper = MaxDBSchemaDropper
 dialect.defaultrunner = MaxDBDefaultRunner
+dialect.execution_ctx_cls = MaxDBExecutionContext
\ No newline at end of file
index 84f95fad99605b0872c3141adf27d7420fcbe9a3..bcfd975ab3dc0e7f69d7aaac9d9c9951ad9d71a0 100644 (file)
@@ -377,6 +377,7 @@ class MSSQLDialect(default.DefaultDialect):
     name = 'mssql'
     supports_default_values = True
     supports_empty_insert = False
+    execution_ctx_cls = MSSQLExecutionContext
 
     colspecs = {
         sqltypes.Unicode : MSNVarchar,
@@ -494,9 +495,6 @@ class MSSQLDialect(default.DefaultDialect):
             self.has_window_funcs =  bool(int(opts.pop('has_window_funcs')))
         return self.make_connect_string(opts)
 
-    def create_execution_context(self, *args, **kwargs):
-        return MSSQLExecutionContext(self, *args, **kwargs)
-
     def type_descriptor(self, typeobj):
         newobj = sqltypes.adapt_type(typeobj, self.colspecs)
         # Some types need to know about the dialect
@@ -774,6 +772,7 @@ class MSSQLDialect_pyodbc(MSSQLDialect):
     # PyODBC unicode is broken on UCS-4 builds
     supports_unicode = sys.maxunicode == 65535
     supports_unicode_statements = supports_unicode
+    execution_ctx_cls = MSSQLExecutionContext_pyodbc
 
     def __init__(self, **params):
         super(MSSQLDialect_pyodbc, self).__init__(**params)
@@ -850,8 +849,6 @@ class MSSQLDialect_pyodbc(MSSQLDialect):
         else:
             return False
 
-    def create_execution_context(self, *args, **kwargs):
-        return MSSQLExecutionContext_pyodbc(self, *args, **kwargs)
 
     def do_execute(self, cursor, statement, parameters, context=None, **kwargs):
         super(MSSQLDialect_pyodbc, self).do_execute(cursor, statement, parameters, context=context, **kwargs)
index 9c6c48e0f65ad8f45cca7e25cbbd2316083eff78..1dc863233cfbfd83bafe276a4421bb8e44aa9d99 100644 (file)
@@ -1496,9 +1496,6 @@ class MySQLDialect(default.DefaultDialect):
             opts['client_flag'] = client_flag
         return [[], opts]
 
-    def create_execution_context(self, connection, **kwargs):
-        return MySQLExecutionContext(self, connection, **kwargs)
-
     def type_descriptor(self, typeobj):
         return sqltypes.adapt_type(typeobj, colspecs)
 
@@ -2727,3 +2724,4 @@ dialect = MySQLDialect
 dialect.statement_compiler = MySQLCompiler
 dialect.schemagenerator = MySQLSchemaGenerator
 dialect.schemadropper = MySQLSchemaDropper
+dialect.execution_ctx_cls = MySQLExecutionContext
index 72a0bb2650adf264bbadb97502a1f1c0652dfff2..66e83ec2fd5f5090ad395ca2d14903ab4ea10aca 100644 (file)
@@ -471,9 +471,6 @@ class OracleDialect(default.DefaultDialect):
     def do_recover_twophase(self, connection):
         pass
 
-    def create_execution_context(self, *args, **kwargs):
-        return OracleExecutionContext(self, *args, **kwargs)
-
     def has_table(self, connection, table_name, schema=None):
         if not schema:
             schema = self.get_default_schema_name(connection)
@@ -891,3 +888,4 @@ dialect.schemagenerator = OracleSchemaGenerator
 dialect.schemadropper = OracleSchemaDropper
 dialect.preparer = OracleIdentifierPreparer
 dialect.defaultrunner = OracleDefaultRunner
+dialect.execution_ctx_cls = OracleExecutionContext
\ No newline at end of file
index 320c749bc95e4fbef0a2838310ed95ca6e92f331..dd9fa529309999ea36a4fb461783811899a8f1e1 100644 (file)
@@ -340,7 +340,7 @@ class PGDialect(default.DefaultDialect):
     default_paramstyle = 'pyformat'
     supports_default_values = True
     supports_empty_insert = False
-
+    
     def __init__(self, server_side_cursors=False, **kwargs):
         default.DefaultDialect.__init__(self, **kwargs)
         self.server_side_cursors = server_side_cursors
@@ -357,9 +357,6 @@ class PGDialect(default.DefaultDialect):
         opts.update(url.query)
         return ([], opts)
 
-    def create_execution_context(self, *args, **kwargs):
-        return PGExecutionContext(self, *args, **kwargs)
-
     def type_descriptor(self, typeobj):
         return sqltypes.adapt_type(typeobj, colspecs)
 
@@ -828,3 +825,4 @@ dialect.schemagenerator = PGSchemaGenerator
 dialect.schemadropper = PGSchemaDropper
 dialect.preparer = PGIdentifierPreparer
 dialect.defaultrunner = PGDefaultRunner
+dialect.execution_ctx_cls = PGExecutionContext
index 4226baf5a623dc4373a3ba59b15a10029e2d72c6..6eabca1a9107dc00ceac5d2c81675ecc7072f51e 100644 (file)
@@ -407,9 +407,6 @@ class SQLiteDialect(default.DefaultDialect):
     def type_descriptor(self, typeobj):
         return sqltypes.adapt_type(typeobj, colspecs)
 
-    def create_execution_context(self, connection, **kwargs):
-        return SQLiteExecutionContext(self, connection, **kwargs)
-
     def is_disconnect(self, e):
         return isinstance(e, self.dbapi.ProgrammingError) and "Cannot operate on a closed database." in str(e)
 
@@ -590,19 +587,6 @@ class SQLiteSchemaGenerator(compiler.SchemaGenerator):
             colspec += " NOT NULL"
         return colspec
 
-    # this doesnt seem to be needed, although i suspect older versions of sqlite might still
-    # not directly support composite primary keys
-    #def visit_primary_key_constraint(self, constraint):
-    #    if len(constraint) > 1:
-    #        self.append(", \n")
-    #        # put all PRIMARY KEYS in a UNIQUE index
-    #        self.append("\tUNIQUE (%s)" % string.join([c.name for c in constraint],', '))
-    #    else:
-    #        super(SQLiteSchemaGenerator, self).visit_primary_key_constraint(constraint)
-
-class SQLiteSchemaDropper(compiler.SchemaDropper):
-    pass
-
 class SQLiteIdentifierPreparer(compiler.IdentifierPreparer):
     reserved_words = set([
         'add', 'after', 'all', 'alter', 'analyze', 'and', 'as', 'asc',
@@ -631,5 +615,5 @@ dialect = SQLiteDialect
 dialect.poolclass = pool.SingletonThreadPool
 dialect.statement_compiler = SQLiteCompiler
 dialect.schemagenerator = SQLiteSchemaGenerator
-dialect.schemadropper = SQLiteSchemaDropper
 dialect.preparer = SQLiteIdentifierPreparer
+dialect.execution_ctx_cls = SQLiteExecutionContext
\ No newline at end of file
index b464a3bcbe5e9050403d294f2f723a6eb33d7878..75b208056d45d413c8c489f318c59c4ef9813bed 100644 (file)
@@ -455,7 +455,8 @@ class SybaseSQLDialect(default.DefaultDialect):
     supports_unicode_statements = False
     supports_sane_rowcount = False
     supports_sane_multi_rowcount = False
-
+    execution_ctx_cls = SybaseSQLExecutionContext
+    
     def __new__(cls, dbapi=None, *args, **kwargs):
         if cls != SybaseSQLDialect:
             return super(SybaseSQLDialect, cls).__new__(cls, *args, **kwargs)
@@ -489,9 +490,6 @@ class SybaseSQLDialect(default.DefaultDialect):
                 raise ImportError('No DBAPI module detected for SybaseSQL - please install mxodbc')
     dbapi = classmethod(dbapi)
 
-    def create_execution_context(self, *args, **kwargs):
-        return SybaseSQLExecutionContext(self, *args, **kwargs)
-
     def type_descriptor(self, typeobj):
         newobj = sqltypes.adapt_type(typeobj, self.colspecs)
         return newobj
@@ -628,6 +626,8 @@ class SybaseSQLDialect(default.DefaultDialect):
 
 
 class SybaseSQLDialect_mxodbc(SybaseSQLDialect):
+    execution_ctx_cls = SybaseSQLExecutionContext_mxodbc
+    
     def __init__(self, **params):
         super(SybaseSQLDialect_mxodbc, self).__init__(**params)
 
@@ -656,9 +656,6 @@ class SybaseSQLDialect_mxodbc(SybaseSQLDialect):
         #return True
         return False
 
-    def create_execution_context(self, *args, **kwargs):
-        return SybaseSQLExecutionContext_mxodbc(self, *args, **kwargs)
-
     def do_execute(self, cursor, statement, parameters, context=None, **kwargs):
         super(SybaseSQLDialect_mxodbc, self).do_execute(cursor, statement, parameters, context=context, **kwargs)
 
@@ -675,6 +672,8 @@ class SybaseSQLDialect_mxodbc(SybaseSQLDialect):
 
 
 class SybaseSQLDialect_pyodbc(SybaseSQLDialect):
+    execution_ctx_cls = SybaseSQLExecutionContext_pyodbc
+    
     def __init__(self, **params):
         super(SybaseSQLDialect_pyodbc, self).__init__(**params)
         self.dbapi_type_map = {'getdate' : SybaseDate_pyodbc()}
@@ -701,9 +700,6 @@ class SybaseSQLDialect_pyodbc(SybaseSQLDialect):
         #return True
         return False
 
-    def create_execution_context(self, *args, **kwargs):
-        return SybaseSQLExecutionContext_pyodbc(self, *args, **kwargs)
-
     def do_execute(self, cursor, statement, parameters, context=None, **kwargs):
         super(SybaseSQLDialect_pyodbc, self).do_execute(cursor, statement, parameters, context=context, **kwargs)
 
index dbcd5b76bee8de8b73112bf966e878cb6d3033f1..9efd73a89fdb585f568b80f3d76df653a2c35793 100644 (file)
@@ -177,11 +177,6 @@ class Dialect(object):
 
         raise NotImplementedError()
 
-    def create_execution_context(self, connection, compiled=None, compiled_parameters=None, statement=None, parameters=None):
-        """Return a new :class:`~sqlalchemy.engine.ExecutionContext` object."""
-
-        raise NotImplementedError()
-
     def do_begin(self, connection):
         """Provide an implementation of *connection.begin()*, given a DB-API connection."""
 
@@ -314,9 +309,7 @@ class ExecutionContext(object):
      a list of Column objects for which a server-side default
      or inline SQL expression value was fired off.  applies to inserts and updates.
 
-    The Dialect should provide an ExecutionContext via the
-    create_execution_context() method.  The `pre_exec` and `post_exec`
-    methods will be called for compiled statements.
+
     """
 
     def create_cursor(self):
@@ -927,7 +920,8 @@ class Connection(Connectable):
 
     def __create_execution_context(self, **kwargs):
         try:
-            return self.engine.dialect.create_execution_context(connection=self, **kwargs)
+            dialect = self.engine.dialect
+            return dialect.execution_ctx_cls(dialect, connection=self, **kwargs)
         except Exception, e:
             self._handle_dbapi_exception(e, kwargs.get('statement', None), kwargs.get('parameters', None), None)
             raise
index 251cf8b2c20c93f4e461272b799db84738709710..11fd43df561d3a9e5d856b37dda814013ce3980b 100644 (file)
@@ -59,9 +59,6 @@ class DefaultDialect(base.Dialect):
             raise exc.ArgumentError("Label length of %d is greater than this dialect's maximum identifier length of %d" % (label_length, self.max_identifier_length))
         self.label_length = label_length
 
-    def create_execution_context(self, connection, **kwargs):
-        return DefaultExecutionContext(self, connection, **kwargs)
-
     def type_descriptor(self, typeobj):
         """Provide a database-specific ``TypeEngine`` object, given
         the generic object which comes from the types module.
@@ -367,3 +364,5 @@ class DefaultExecutionContext(base.ExecutionContext):
 
             self.postfetch_cols = self.compiled.postfetch
             self.prefetch_cols = self.compiled.prefetch
+
+DefaultDialect.execution_ctx_cls = DefaultExecutionContext
\ No newline at end of file