class documentation

class DefaultDialect(interfaces.Dialect):

Known subclasses: sqlalchemy.databases.firebird.FBDialect, sqlalchemy.databases.mssql.MSDialect, sqlalchemy.databases.mysql.MySQLDialect, sqlalchemy.databases.oracle.OracleDialect, sqlalchemy.databases.postgresql.PGDialect, sqlalchemy.databases.sqlite.SQLiteDialect, sqlalchemy.databases.sybase.SybaseDialect, sqlalchemy.engine.default.StrCompileDialect

View In Hierarchy

Default implementation of Dialect
Class Method get​_pool​_class Undocumented
Class Method load​_provisioning set up the provision.py module for this dialect.
Method connect Establish a connection using this dialect's DBAPI.
Method create​_connect​_args Build DB-API compatible connection arguments.
Method create​_xid Create a random two-phase transaction ID.
Method denormalize​_name convert the given name to a case insensitive identifier for the backend if it is an all-lowercase name.
Method do​_begin Provide an implementation of connection.begin(), given a DB-API connection.
Method do​_close Provide an implementation of connection.close(), given a DBAPI connection.
Method do​_commit Provide an implementation of connection.commit(), given a DB-API connection.
Method do​_execute Provide an implementation of cursor.execute(statement, parameters).
Method do​_execute​_no​_params Provide an implementation of cursor.execute(statement).
Method do​_executemany Provide an implementation of cursor.executemany(statement, parameters).
Method do​_release​_savepoint Release the named savepoint on a connection.
Method do​_rollback Provide an implementation of connection.rollback(), given a DB-API connection.
Method do​_rollback​_to​_savepoint Rollback a connection to the named savepoint.
Method do​_savepoint Create a savepoint with the given name.
Method get​_default​_isolation​_level Given a DBAPI connection, return its isolation level, or a default isolation level if one cannot be retrieved.
Method get​_driver​_connection Returns the connection object as returned by the external driver package.
Method has​_index Check the existence of a particular index name in the database.
Method initialize Called during strategized creation of the dialect with a connection.
Method is​_disconnect Return True if the given DB-API error indicates an invalid connection
Method normalize​_name convert the given name to lowercase if it is detected as case insensitive.
Method on​_connect return a callable which sets up a newly created DBAPI connection.
Method reset​_isolation​_level Given a DBAPI connection, revert its isolation to the default.
Method type​_descriptor Provide a database-specific .TypeEngine object, given the generic object which comes from the types module.
Class Variable construct​_arguments Optional set of argument specifiers for various SQLAlchemy constructs, typically schema items.
Class Variable dbapi​_exception​_translation​_map mapping used in the extremely unusual case that a DBAPI's published exceptions don't actually have the __name__ that they are linked towards.
Class Variable supports​_default​_metavalue dialect supports INSERT... VALUES (DEFAULT) syntax
Class Variable supports​_default​_values dialect supports INSERT... DEFAULT VALUES syntax
Class Variable supports​_empty​_insert dialect supports INSERT () VALUES ()
Instance Variable returns​_unicode​_strings Undocumented
Instance Variable type​_compiler Undocumented
Method __init__ Undocumented
Method ​_check​_max​_identifier​_length Perform a connection / server version specific check to determine the max_identifier_length.
Method ​_check​_unicode​_description Undocumented
Method ​_check​_unicode​_returns Undocumented
Method ​_ensure​_has​_table​_connection Undocumented
Method ​_reset​_characteristics Undocumented
Method ​_set​_connection​_characteristics Undocumented
Method do​_ping Undocumented
Method get​_dialect​_pool​_class Undocumented
Method set​_connection​_execution​_options Undocumented
Method set​_engine​_execution​_options Undocumented
Method validate​_identifier Undocumented
Class Variable colspecs Undocumented
Class Variable connection​_characteristics Undocumented
Class Variable cte​_follows​_insert Undocumented
Class Variable default​_paramstyle Undocumented
Class Variable default​_sequence​_base Undocumented
Class Variable engine​_config​_types Undocumented
Class Variable full​_returning Undocumented
Class Variable inline​_comments Undocumented
Class Variable insert​_executemany​_returning Undocumented
Class Variable is​_async Undocumented
Class Variable isolation​_level Undocumented
Class Variable max​_constraint​_name​_length Undocumented
Class Variable max​_index​_name​_length Undocumented
Class Variable name Undocumented
Class Variable non​_native​_boolean​_check​_constraint Undocumented
Class Variable postfetch​_lastrowid Undocumented
Class Variable preexecute​_autoincrement​_sequences Undocumented
Class Variable reflection​_options Undocumented
Class Variable requires​_name​_normalize Undocumented
Class Variable sequences​_optional Undocumented
Class Variable server​_side​_cursors Undocumented
Class Variable supports​_alter Undocumented
Class Variable supports​_comments Undocumented
Class Variable supports​_for​_update​_of Undocumented
Class Variable supports​_identity​_columns Undocumented
Class Variable supports​_is​_distinct​_from Undocumented
Class Variable supports​_multivalues​_insert Undocumented
Class Variable supports​_native​_decimal Undocumented
Class Variable supports​_native​_enum Undocumented
Class Variable supports​_sane​_multi​_rowcount Undocumented
Class Variable supports​_sane​_rowcount Undocumented
Class Variable supports​_schemas Undocumented
Class Variable supports​_sequences Undocumented
Class Variable supports​_server​_side​_cursors Undocumented
Class Variable supports​_simple​_order​_by​_label Undocumented
Class Variable supports​_statement​_cache indicates if this dialect supports caching.
Class Variable supports​_unicode​_binds Undocumented
Class Variable supports​_unicode​_statements Undocumented
Class Variable supports​_views Undocumented
Class Variable tuple​_in​_values Undocumented
Class Variable use​_setinputsizes Undocumented
Instance Variable ​_decoder Undocumented
Instance Variable ​_description​_decoder Undocumented
Instance Variable ​_encoder Undocumented
Instance Variable ​_ischema Undocumented
Instance Variable ​_user​_defined​_max​_identifier​_length Undocumented
Instance Variable case​_sensitive Undocumented
Instance Variable compiler​_linting Undocumented
Instance Variable convert​_unicode Undocumented
Instance Variable dbapi Undocumented
Instance Variable default​_isolation​_level Undocumented
Instance Variable default​_schema​_name Undocumented
Instance Variable description​_encoding Undocumented
Instance Variable encoding Undocumented
Instance Variable identifier​_preparer Undocumented
Instance Variable implicit​_returning Undocumented
Instance Variable label​_length Undocumented
Instance Variable max​_identifier​_length Undocumented
Instance Variable paramstyle Undocumented
Instance Variable positional Undocumented
Instance Variable server​_version​_info Undocumented
Instance Variable supports​_native​_boolean Undocumented
Property ​_dialect​_specific​_select​_one Undocumented
Property ​_supports​_statement​_cache Undocumented
Property ​_type​_memos Undocumented
Property dialect​_description Undocumented
Property supports​_sane​_rowcount​_returning True if this dialect supports sane rowcount even if RETURNING is in use.

Inherited from Dialect:

Class Method engine​_created A convenience hook called before returning the final _engine.Engine.
Class Method get​_dialect​_cls Given a URL, return the .Dialect that will be used.
Method ​_get​_default​_schema​_name Return the string name of the currently selected schema from the given connection.
Method ​_get​_server​_version​_info Retrieve the server version info from the given connection.
Method do​_begin​_twophase Begin a two phase transaction on the given connection.
Method do​_commit​_twophase Commit a two phase transaction on the given connection.
Method do​_prepare​_twophase Prepare a two phase transaction on the given connection.
Method do​_recover​_twophase Recover list of uncommitted prepared two phase transaction identifiers on the given connection.
Method do​_rollback​_twophase Rollback a two phase transaction on the given connection.
Method do​_set​_input​_sizes invoke the cursor.setinputsizes() method with appropriate arguments
Method get​_check​_constraints Return information about check constraints in table_name.
Method get​_columns Return information about columns in table_name.
Method get​_foreign​_keys Return information about foreign_keys in table_name.
Method get​_indexes Return information about indexes in table_name.
Method get​_isolation​_level Given a DBAPI connection, return its isolation level.
Method get​_pk​_constraint Return information about the primary key constraint on table_name`.
Method get​_sequence​_names Return a list of all sequence names available in the database.
Method get​_table​_comment Return the "comment" for the table identified by table_name.
Method get​_table​_names Return a list of table names for schema.
Method get​_temp​_table​_names Return a list of temporary table names on the given connection, if supported by the underlying backend.
Method get​_temp​_view​_names Return a list of temporary view names on the given connection, if supported by the underlying backend.
Method get​_unique​_constraints Return information about unique constraints in table_name.
Method get​_view​_definition Return view definition.
Method get​_view​_names Return a list of all view names available in the database.
Method has​_sequence Check the existence of a particular sequence in the database.
Method has​_table For internal dialect use, check the existence of a particular table in the database.
Method on​_connect​_url return a callable which sets up a newly created DBAPI connection.
Method set​_isolation​_level Given a DBAPI connection, set its isolation level.
Class Variable ​_has​_events Undocumented
@classmethod
def load_provisioning(cls):

set up the provision.py module for this dialect.

For dialects that include a provision.py module that sets up provisioning followers, this method should initiate that process.

A typical implementation would be:

@classmethod
def load_provisioning(cls):
    __import__("mydialect.provision")

The default method assumes a module named provision.py inside the owning package of the current dialect, based on the __module__ attribute:

@classmethod
def load_provisioning(cls):
    package = ".".join(cls.__module__.split(".")[0:-1])
    try:
        __import__(package + ".provision")
    except ImportError:
        pass
New in version 1.3.14.
def connect(self, *cargs, **cparams):

Establish a connection using this dialect's DBAPI.

The default implementation of this method is:

def connect(self, *cargs, **cparams):
    return self.dbapi.connect(*cargs, **cparams)

The *cargs, **cparams parameters are generated directly from this dialect's .Dialect.create_connect_args method.

This method may be used for dialects that need to perform programmatic per-connection steps when a new connection is procured from the DBAPI.

See Also

.Dialect.create_connect_args

.Dialect.on_connect

Parameters
*cargspositional parameters returned from the .Dialect.create_connect_args method
**cparamskeyword parameters returned from the .Dialect.create_connect_args method.
Returns
a DBAPI connection, typically from the PEP 249 module level .connect() function.
def create_connect_args(self, url):

Build DB-API compatible connection arguments.

Given a .URL object, returns a tuple consisting of a (*args, **kwargs) suitable to send directly to the dbapi's connect function. The arguments are sent to the .Dialect.connect method which then runs the DBAPI-level connect() function.

The method typically makes use of the .URL.translate_connect_args method in order to generate a dictionary of options.

The default implementation is:

def create_connect_args(self, url):
    opts = url.translate_connect_args()
    opts.update(url.query)
    return [[], opts]

See Also

.URL.translate_connect_args

Parameters
urla .URL object
Returns
a tuple of (*args, **kwargs) which will be passed to the .Dialect.connect method.
def create_xid(self):

Create a random two-phase transaction ID.

This id will be passed to do_begin_twophase(), do_rollback_twophase(), do_commit_twophase(). Its format is unspecified.

def denormalize_name(self, name):

convert the given name to a case insensitive identifier for the backend if it is an all-lowercase name.

This method is only used if the dialect defines requires_name_normalize=True.

def do_begin(self, dbapi_connection):

Provide an implementation of connection.begin(), given a DB-API connection.

The DBAPI has no dedicated "begin" method and it is expected that transactions are implicit. This hook is provided for those DBAPIs that might need additional help in this area.

Note that .Dialect.do_begin is not called unless a .Transaction object is in use. The .Dialect.do_autocommit hook is provided for DBAPIs that need some extra commands emitted after a commit in order to enter the next transaction, when the SQLAlchemy _engine.Connection is used in its default "autocommit" mode.

Parameters
dbapi​_connectiona DBAPI connection, typically proxied within a .ConnectionFairy.
def do_close(self, dbapi_connection):

Provide an implementation of connection.close(), given a DBAPI connection.

This hook is called by the _pool.Pool when a connection has been detached from the pool, or is being returned beyond the normal capacity of the pool.

def do_commit(self, dbapi_connection):
Provide an implementation of connection.commit(), given a DB-API connection.
Parameters
dbapi​_connectiona DBAPI connection, typically proxied within a .ConnectionFairy.
def do_execute(self, cursor, statement, parameters, context=None):
def do_execute_no_params(self, cursor, statement, context=None):

Provide an implementation of cursor.execute(statement).

The parameter collection should not be sent.

def do_release_savepoint(self, connection, name):
Release the named savepoint on a connection.
Parameters
connectiona _engine.Connection.
namesavepoint name.
def do_rollback(self, dbapi_connection):
Provide an implementation of connection.rollback(), given a DB-API connection.
Parameters
dbapi​_connectiona DBAPI connection, typically proxied within a .ConnectionFairy.
def do_rollback_to_savepoint(self, connection, name):
Rollback a connection to the named savepoint.
Parameters
connectiona _engine.Connection.
namesavepoint name.
def do_savepoint(self, connection, name):
Create a savepoint with the given name.
Parameters
connectiona _engine.Connection.
namesavepoint name.
def get_default_isolation_level(self, dbapi_conn):

Given a DBAPI connection, return its isolation level, or a default isolation level if one cannot be retrieved.

May be overridden by subclasses in order to provide a "fallback" isolation level for databases that cannot reliably retrieve the actual isolation level.

By default, calls the _engine.Interfaces.get_isolation_level method, propagating any exceptions raised.

New in version 1.3.22.
def get_driver_connection(self, connection):

Returns the connection object as returned by the external driver package.

For normal dialects that use a DBAPI compliant driver this call will just return the connection passed as argument. For dialects that instead adapt a non DBAPI compliant driver, like when adapting an asyncio driver, this call will return the connection-like object as returned by the driver.

New in version 1.4.24.
def has_index(self, connection, table_name, index_name, schema=None):

Check the existence of a particular index name in the database.

Given a _engine.Connection object, a string table_name and string index name, return True if an index of the given name on the given table exists, false otherwise.

The .DefaultDialect implements this in terms of the .Dialect.has_table and .Dialect.get_indexes methods, however dialects can implement a more performant version.

New in version 1.4.
def initialize(self, connection):

Called during strategized creation of the dialect with a connection.

Allows dialects to configure options based on server version info or other properties.

The connection passed here is a SQLAlchemy Connection object, with full capabilities.

The initialize() method of the base dialect should be called via super().

Note

as of SQLAlchemy 1.4, this method is called before any _engine.Dialect.on_connect hooks are called.

def normalize_name(self, name):

convert the given name to lowercase if it is detected as case insensitive.

This method is only used if the dialect defines requires_name_normalize=True.

def on_connect(self):

return a callable which sets up a newly created DBAPI connection.

The callable should accept a single argument "conn" which is the DBAPI connection itself. The inner callable has no return value.

E.g.:

class MyDialect(default.DefaultDialect):
    # ...

    def on_connect(self):
        def do_on_connect(connection):
            connection.execute("SET SPECIAL FLAGS etc")

        return do_on_connect

This is used to set dialect-wide per-connection options such as isolation modes, Unicode modes, etc.

The "do_on_connect" callable is invoked by using the _events.PoolEvents.connect event hook, then unwrapping the DBAPI connection and passing it into the callable.

Changed in version 1.4: the on_connect hook is no longer called twice for the first connection of a dialect. The on_connect hook is still called before the _engine.Dialect.initialize method however.
Changed in version 1.4.3: the on_connect hook is invoked from a new method on_connect_url that passes the URL that was used to create the connect args. Dialects can implement on_connect_url instead of on_connect if they need the URL object that was used for the connection in order to get additional context.

If None is returned, no event listener is generated.

See Also

.Dialect.connect - allows the DBAPI connect() sequence itself to be controlled.

.Dialect.on_connect_url - supersedes .Dialect.on_connect to also receive the _engine.URL object in context.

Returns
a callable that accepts a single DBAPI connection as an argument, or None.
def reset_isolation_level(self, dbapi_conn):

Given a DBAPI connection, revert its isolation to the default.

Note that this is a dialect-level method which is used as part of the implementation of the _engine.Connection and _engine.Engine isolation level facilities; these APIs should be preferred for most typical use cases.

See Also

_engine.Connection.get_isolation_level - view current level

_engine.Connection.default_isolation_level - view default level

:paramref:`.Connection.execution_options.isolation_level` - set per _engine.Connection isolation level

:paramref:`_sa.create_engine.isolation_level` - set per _engine.Engine isolation level

def type_descriptor(self, typeobj):

Provide a database-specific .TypeEngine object, given the generic object which comes from the types module.

This method looks for a dictionary called colspecs as a class or instance-level variable, and passes on to _types.adapt_type.

construct_arguments =

Optional set of argument specifiers for various SQLAlchemy constructs, typically schema items.

To implement, establish as a series of tuples, as in:

construct_arguments = [
    (schema.Index, {
        "using": False,
        "where": None,
        "ops": None
    })
]

If the above construct is established on the PostgreSQL dialect, the .Index construct will now accept the keyword arguments postgresql_using, postgresql_where, nad postgresql_ops. Any other argument specified to the constructor of .Index which is prefixed with postgresql_ will raise .ArgumentError.

A dialect which does not include a construct_arguments member will not participate in the argument validation system. For such a dialect, any argument name is accepted by all participating constructs, within the namespace of arguments prefixed with that dialect name. The rationale here is so that third-party dialects that haven't yet implemented this feature continue to function in the old way.

New in version 0.9.2.

See Also

.DialectKWArgs - implementing base class which consumes .DefaultDialect.construct_arguments

dbapi_exception_translation_map =

mapping used in the extremely unusual case that a DBAPI's published exceptions don't actually have the __name__ that they are linked towards.

New in version 1.0.5.
returns_unicode_strings =

Undocumented

type_compiler =

Undocumented

@util.deprecated_params(convert_unicode=('1.3', 'The :paramref:`_sa.create_engine.convert_unicode` parameter and corresponding dialect-level parameters are deprecated, and will be removed in a future release. Modern DBAPIs support Python Unicode natively and this parameter is unnecessary.'), empty_in_strategy=('1.4', 'The :paramref:`_sa.create_engine.empty_in_strategy` keyword is deprecated, and no longer has any effect. All IN expressions are now rendered using the "expanding parameter" strategy which renders a set of boundexpressions, or an "empty set" SELECT, at statement executiontime.'), case_sensitive=('1.4', 'The :paramref:`_sa.create_engine.case_sensitive` parameter is deprecated and will be removed in a future release. Applications should work with result column names in a case sensitive fashion.'), server_side_cursors=('1.4', 'The :paramref:`_sa.create_engine.server_side_cursors` parameter is deprecated and will be removed in a future release. Please use the :paramref:`_engine.Connection.execution_options.stream_results` parameter.'))
def __init__(self, convert_unicode=False, encoding='utf-8', paramstyle=None, dbapi=None, implicit_returning=None, case_sensitive=True, supports_native_boolean=None, max_identifier_length=None, label_length=None, compiler_linting=int(compiler.NO_LINTING), server_side_cursors=False, **kwargs):
def _check_max_identifier_length(self, connection):

Perform a connection / server version specific check to determine the max_identifier_length.

If the dialect's class level max_identifier_length should be used, can return None.

New in version 1.3.9.
def _check_unicode_description(self, connection):
def _check_unicode_returns(self, connection, additional_tests=None):
def _ensure_has_table_connection(self, arg):

Undocumented

def _reset_characteristics(self, characteristics, dbapi_connection):

Undocumented

def _set_connection_characteristics(self, connection, characteristics):

Undocumented

def get_dialect_pool_class(self, url):

Undocumented

def set_connection_execution_options(self, connection, opts):

Undocumented

def set_engine_execution_options(self, engine, opts):

Undocumented

def validate_identifier(self, ident):

Undocumented

connection_characteristics =

Undocumented

cte_follows_insert: bool =
default_sequence_base: int =

Undocumented

inline_comments: bool =

Undocumented

insert_executemany_returning: bool =
max_constraint_name_length =

Undocumented

max_index_name_length =

Undocumented

non_native_boolean_check_constraint: bool =

Undocumented

preexecute_autoincrement_sequences: bool =
reflection_options: tuple =
requires_name_normalize: bool =
server_side_cursors: bool =

Undocumented

supports_for_update_of: bool =

Undocumented

supports_is_distinct_from: bool =

Undocumented

supports_native_enum: bool =
supports_schemas: bool =

Undocumented

supports_simple_order_by_label: bool =
supports_statement_cache: bool =

indicates if this dialect supports caching.

All dialects that are compatible with statement caching should set this flag to True directly on each dialect class and subclass that supports it. SQLAlchemy tests that this flag is locally present on each dialect subclass before it will use statement caching. This is to provide safety for legacy or new dialects that are not yet fully tested to be compliant with SQL statement caching.

New in version 1.4.5.
supports_views: bool =

Undocumented

tuple_in_values: bool =

Undocumented

_decoder =

Undocumented

_description_decoder =
_encoder =

Undocumented

_ischema =

Undocumented

_user_defined_max_identifier_length =

Undocumented

case_sensitive =

Undocumented

compiler_linting =

Undocumented

default_isolation_level =

Undocumented

default_schema_name =

Undocumented

identifier_preparer =

Undocumented

label_length =

Undocumented

positional =

Undocumented

@util.memoized_property
_dialect_specific_select_one =

Undocumented

@util.memoized_property
_supports_statement_cache =

Undocumented

@util.memoized_property
_type_memos =

Undocumented

@property
dialect_description =

Undocumented

@property
supports_sane_rowcount_returning =

True if this dialect supports sane rowcount even if RETURNING is in use.

For dialects that don't support RETURNING, this is synonymous with supports_sane_rowcount.