class documentation

class Dialect(object):

Known subclasses: sqlalchemy.engine.default.DefaultDialect

View In Hierarchy

Define the behavior of a specific database and DB-API combination.

Any aspect of metadata definition, SQL query generation, execution, result-set handling, or anything else which varies between databases is defined under the general category of the Dialect. The Dialect acts as a factory for other database-specific object implementations including ExecutionContext, Compiled, DefaultGenerator, and TypeEngine.

Note

Third party dialects should not subclass .Dialect directly. Instead, subclass .default.DefaultDialect or descendant class.

All dialects include the following attributes. There are many other attributes that may be supported as well:

name
identifying name for the dialect from a DBAPI-neutral point of view (i.e. 'sqlite')
driver
identifying name for the dialect's DBAPI
positional
True if the paramstyle for this Dialect is positional.
paramstyle
the paramstyle to be used (some DB-APIs support multiple paramstyles).
encoding
type of encoding to use for unicode, usually defaults to 'utf-8'.
statement_compiler
a .Compiled class used to compile SQL statements
ddl_compiler
a .Compiled class used to compile DDL statements
server_version_info
a tuple containing a version number for the DB backend in use. This value is only available for supporting dialects, and is typically populated during the initial connection to the database.
default_schema_name
the name of the default schema. This value is only available for supporting dialects, and is typically populated during the initial connection to the database.
execution_ctx_cls
a .ExecutionContext class used to handle statement execution
execute_sequence_format
either the 'tuple' or 'list' type, depending on what cursor.execute() accepts for the second argument (they vary).
preparer
a ~sqlalchemy.sql.compiler.IdentifierPreparer class used to quote identifiers.
supports_alter
True if the database supports ALTER TABLE - used only for generating foreign key constraints in certain circumstances
max_identifier_length
The maximum length of identifier names.
supports_sane_rowcount
Indicate whether the dialect properly implements rowcount for UPDATE and DELETE statements.
supports_sane_multi_rowcount
Indicate whether the dialect properly implements rowcount for UPDATE and DELETE statements when executed via executemany.
preexecute_autoincrement_sequences
True if 'implicit' primary key functions must be executed separately in order to get their value. This is currently oriented towards PostgreSQL.
implicit_returning
use RETURNING or equivalent during INSERT execution in order to load newly generated primary keys and other column defaults in one execution, which are then available via inserted_primary_key. If an insert statement has returning() specified explicitly, the "implicit" functionality is not used and inserted_primary_key will not be available.
colspecs
A dictionary of TypeEngine classes from sqlalchemy.types mapped to subclasses that are specific to the dialect class. This dictionary is class-level only and is not accessed from the dialect instance itself.
supports_default_values
Indicates if the construct INSERT INTO tablename DEFAULT VALUES is supported
supports_sequences
Indicates if the dialect supports CREATE SEQUENCE or similar.
sequences_optional
If True, indicates if the "optional" flag on the Sequence() construct should signal to not generate a CREATE SEQUENCE. Applies only to dialects that support sequences. Currently used only to allow PostgreSQL SERIAL to be used on a column that specifies Sequence() for usage on other backends.
supports_native_enum
Indicates if the dialect supports a native ENUM construct. This will prevent types.Enum from generating a CHECK constraint when that type is used.
supports_native_boolean
Indicates if the dialect supports a native boolean construct. This will prevent types.Boolean from generating a CHECK constraint when that type is used.
dbapi_exception_translation_map

A dictionary of names that will contain as values the names of pep-249 exceptions ("IntegrityError", "OperationalError", etc) keyed to alternate class names, to support the case where a DBAPI has exception classes that aren't named as they are referred to (e.g. IntegrityError = MyException). In the vast majority of cases this dictionary is empty.

New in version 1.0.5.
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.
Class Method load​_provisioning set up the provision.py module for this dialect.
Class Method type​_descriptor Transform a generic type to a dialect-specific type.
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 connect Establish a connection using this dialect's DBAPI.
Method create​_connect​_args Build DB-API compatible connection arguments.
Method create​_xid Create a 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​_begin​_twophase Begin a two phase transaction on the given 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​_commit​_twophase Commit a two phase transaction on the given 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​_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​_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​_rollback​_twophase Rollback a two phase transaction on the given connection.
Method do​_savepoint Create a savepoint with the given name.
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​_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 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​_index Check the existence of a particular index name 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 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 on​_connect​_url 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 set​_isolation​_level Given a DBAPI connection, set its isolation level.
Class Variable ​_has​_events Undocumented
Class Variable supports​_statement​_cache indicates if this dialect supports caching.
@classmethod
def engine_created(cls, engine):

A convenience hook called before returning the final _engine.Engine.

If the dialect returned a different class from the .get_dialect_cls method, then the hook is called on both classes, first on the dialect class returned by the .get_dialect_cls method and then on the class on which the method was called.

The hook should be used by dialects and/or wrappers to apply special events to the engine or its components. In particular, it allows a dialect-wrapping class to apply dialect-level events.

New in version 1.0.3.
@classmethod
def get_dialect_cls(cls, url):

Given a URL, return the .Dialect that will be used.

This is a hook that allows an external plugin to provide functionality around an existing dialect, by allowing the plugin to be loaded from the url based on an entrypoint, and then the plugin returns the actual dialect to be used.

By default this just returns the cls.

New in version 1.0.3.
@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.
@classmethod
def type_descriptor(cls, typeobj):

Transform a generic type to a dialect-specific type.

Dialect classes will usually use the _types.adapt_type function in the types module to accomplish this.

The returned result is cached per dialect class so can contain no dialect-instance state.

def _get_default_schema_name(self, connection):

Return the string name of the currently selected schema from the given connection.

This is used by the default implementation to populate the "default_schema_name" attribute and is called exactly once upon first connect.

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 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_begin_twophase(self, connection, xid):
Begin a two phase transaction on the given connection.
Parameters
connectiona _engine.Connection.
xidxid
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_commit_twophase(self, connection, xid, is_prepared=True, recover=False):
Commit a two phase transaction on the given connection.
Parameters
connectiona _engine.Connection.
xidxid
is​_preparedwhether or not .TwoPhaseTransaction.prepare was called.
recoverif the recover flag was passed.
def do_execute(self, cursor, statement, parameters, context=None):
Provide an implementation of cursor.execute(statement, parameters).
def do_execute_no_params(self, cursor, statement, parameters, context=None):

Provide an implementation of cursor.execute(statement).

The parameter collection should not be sent.

def do_executemany(self, cursor, statement, parameters, context=None):
Provide an implementation of cursor.executemany(statement, parameters).
def do_prepare_twophase(self, connection, xid):
Prepare a two phase transaction on the given connection.
Parameters
connectiona _engine.Connection.
xidxid
def do_recover_twophase(self, connection):
Recover list of uncommitted prepared two phase transaction identifiers on the given connection.
Parameters
connectiona _engine.Connection.
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_rollback_twophase(self, connection, xid, is_prepared=True, recover=False):
Rollback a two phase transaction on the given connection.
Parameters
connectiona _engine.Connection.
xidxid
is​_preparedwhether or not .TwoPhaseTransaction.prepare was called.
recoverif the recover flag was passed.
def do_savepoint(self, connection, name):
Create a savepoint with the given name.
Parameters
connectiona _engine.Connection.
namesavepoint name.
def do_set_input_sizes(self, cursor, list_of_tuples, context):

invoke the cursor.setinputsizes() method with appropriate arguments

This hook is called if the dialect.use_inputsizes flag is set to True. Parameter data is passed in a list of tuples (paramname, dbtype, sqltype), where paramname is the key of the parameter in the statement, dbtype is the DBAPI datatype and sqltype is the SQLAlchemy type. The order of tuples is in the correct parameter order.

New in version 1.4.
def get_check_constraints(self, connection, table_name, schema=None, **kw):

Return information about check constraints in table_name.

Given a string table_name and an optional string schema, return check constraint information as a list of dicts with these keys:

  • name - the check constraint's name
  • sqltext - the check constraint's SQL expression
  • **kw - other options passed to the dialect's get_check_constraints() method.
New in version 1.1.0.
def get_columns(self, connection, table_name, schema=None, **kw):

Return information about columns in table_name.

Given a _engine.Connection, a string table_name, and an optional string schema, return column information as a list of dictionaries with these keys:

name
the column's name
type
[sqlalchemy.types#TypeEngine]
nullable
boolean
default
the column's default value
autoincrement
boolean
sequence
a dictionary of the form
{'name' : str, 'start' :int, 'increment': int, 'minvalue': int,
'maxvalue': int, 'nominvalue': bool, 'nomaxvalue': bool, 'cycle': bool, 'cache': int, 'order': bool}

Additional column attributes may be present.

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.

This method may only raise NotImplementedError and must not raise any other exception, as it is used implicitly upon first connect.

The method must return a value for a dialect that supports isolation level settings, as this level is what will be reverted towards when a per-connection isolation level change is made.

The method defaults to using the .Dialect.get_isolation_level method unless overridden by a dialect.

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 get_foreign_keys(self, connection, table_name, schema=None, **kw):

Return information about foreign_keys in table_name.

Given a _engine.Connection, a string table_name, and an optional string schema, return foreign key information as a list of dicts with these keys:

name
the constraint's name
constrained_columns
a list of column names that make up the foreign key
referred_schema
the name of the referred schema
referred_table
the name of the referred table
referred_columns
a list of column names in the referred table that correspond to constrained_columns
def get_indexes(self, connection, table_name, schema=None, **kw):

Return information about indexes in table_name.

Given a _engine.Connection, a string table_name and an optional string schema, return index information as a list of dictionaries with these keys:

name
the index's name
column_names
list of column names in order
unique
boolean
def get_isolation_level(self, dbapi_conn):

Given a DBAPI connection, return its isolation level.

When working with a _engine.Connection object, the corresponding DBAPI connection may be procured using the _engine.Connection.connection accessor.

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 get_pk_constraint(self, connection, table_name, schema=None, **kw):

Return information about the primary key constraint on table_name`.

Given a _engine.Connection, a string table_name, and an optional string schema, return primary key information as a dictionary with these keys:

constrained_columns
a list of column names that make up the primary key
name
optional name of the primary key constraint.
def get_sequence_names(self, connection, schema=None, **kw):

Return a list of all sequence names available in the database.

New in version 1.4.
Parameters
connectionUndocumented
schemaschema name to query, if not the default schema.
**kwUndocumented
def get_table_comment(self, connection, table_name, schema=None, **kw):

Return the "comment" for the table identified by table_name.

Given a string table_name and an optional string schema, return table comment information as a dictionary with this key:

text
text of the comment

Raises NotImplementedError for dialects that don't support comments.

New in version 1.2.
def get_temp_table_names(self, connection, schema=None, **kw):
Return a list of temporary table names on the given connection, if supported by the underlying backend.
def get_temp_view_names(self, connection, schema=None, **kw):
Return a list of temporary view names on the given connection, if supported by the underlying backend.
def get_unique_constraints(self, connection, table_name, schema=None, **kw):

Return information about unique constraints in table_name.

Given a string table_name and an optional string schema, return unique constraint information as a list of dicts with these keys:

name
the unique constraint's name
column_names
list of column names in order
**kw
other options passed to the dialect's get_unique_constraints() method.
New in version 0.9.0.
def get_view_definition(self, connection, view_name, schema=None, **kw):
def get_view_names(self, connection, schema=None, **kw):
Return a list of all view names available in the database.
Parameters
connectionUndocumented
schemaschema name to query, if not the default schema.
**kwUndocumented
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 has_sequence(self, connection, sequence_name, schema=None, **kw):

Check the existence of a particular sequence in the database.

Given a _engine.Connection object and a string sequence_name, return True if the given sequence exists in the database, False otherwise.

def has_table(self, connection, table_name, schema=None, **kw):

For internal dialect use, check the existence of a particular table in the database.

Given a _engine.Connection object, a string table_name and optional schema name, return True if the given table exists in the database, False otherwise.

This method serves as the underlying implementation of the public facing .Inspector.has_table method, and is also used internally to implement the "checkfirst" behavior for methods like _schema.Table.create and _schema.MetaData.create_all.

Note

This method is used internally by SQLAlchemy, and is published so that third-party dialects may provide an implementation. It is not the public API for checking for table presence. Please use the .Inspector.has_table method. Alternatively, for legacy cross-compatibility, the _engine.Engine.has_table method may be used.

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 is_disconnect(self, e, connection, cursor):
Return True if the given DB-API error indicates an invalid connection
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 on_connect_url(self, url):

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

This method is a new hook that supersedes the _engine.Dialect.on_connect method when implemented by a dialect. When not implemented by a dialect, it invokes the _engine.Dialect.on_connect method directly to maintain compatibility with existing dialects. There is no deprecation for _engine.Dialect.on_connect expected.

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_url(self, url):
        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.

This method differs from _engine.Dialect.on_connect in that it is passed the _engine.URL object that's relevant to the connect args. Normally the only way to get this is from the _engine.Dialect.on_connect hook is to look on the _engine.Engine itself, however this URL object may have been replaced by plugins.

Note

The default implementation of _engine.Dialect.on_connect_url is to invoke the _engine.Dialect.on_connect method. Therefore if a dialect implements this method, the _engine.Dialect.on_connect method will not be called unless the overriding dialect calls it directly from here.

New in version 1.4.3: added _engine.Dialect.on_connect_url which normally calls into _engine.Dialect.on_connect.

See Also

_engine.Dialect.on_connect

Parameters
urla _engine.URL object representing the _engine.URL that was passed to the _engine.Dialect.create_connect_args method.
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 set_isolation_level(self, dbapi_conn, level):

Given a DBAPI connection, set its isolation level.

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

_has_events: bool =

Undocumented

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.