Основные внутренние компоненты

Здесь перечислены некоторые ключевые внутренние конструкции.

Object Name Description

AdaptedConnection

Интерфейс адаптированного объекта соединения для поддержки протокола DBAPI.

BindTyping

Определите различные методы передачи драйверу базы данных информации о типе связанных параметров в операторе.

Compiled

Представляет скомпилированное выражение SQL или DDL.

DBAPIConnection

протокол, представляющий соединение с базой данных PEP 249.

DBAPICursor

протокол, представляющий курсор базы данных PEP 249.

DBAPIType

протокол, представляющий тип базы данных PEP 249.

DDLCompiler

DefaultDialect

Реализация диалекта по умолчанию

DefaultExecutionContext

Dialect

Определите поведение конкретной базы данных и комбинации DB-API.

ExecutionContext

Объект мессенджера для диалекта, который соответствует одному выполнению.

ExpandedState

представляет состояние для использования при создании «расширенных» и «посткомпиляционных» связанных параметров для оператора.

GenericTypeCompiler

Identified

IdentifierPreparer

Обработка кавычек и сложения регистра идентификаторов на основе опций.

SQLCompiler

Реализация по умолчанию Compiled.

StrSQLCompiler

Подкласс SQLCompiler, позволяющий преобразовать в строковое значение небольшой набор нестандартных функций SQL.

class sqlalchemy.engine.BindTyping

Определите различные методы передачи драйверу базы данных информации о типе связанных параметров в операторе.

Добавлено в версии 2.0.

Классная подпись

класс sqlalchemy.engine.BindTyping (enum.Enum)

attribute sqlalchemy.engine.BindTyping.NONE = 1

Не предпринимается никаких шагов для передачи информации о наборе текста драйверу базы данных.

Это поведение по умолчанию для таких баз данных, как SQLite, MySQL / MariaDB, SQL Server.

attribute sqlalchemy.engine.BindTyping.RENDER_CASTS = 3

Воспроизведение кастов или других директив в строке SQL.

Этот метод используется во всех диалектах PostgreSQL, включая asyncpg, pg8000, psycopg, psycopg2. Диалекты, реализующие этот метод, могут выбирать, какие типы данных будут явно приводиться в SQL-операторах, а какие нет.

Когда используется RENDER_CASTS, компилятор вызовет метод SQLCompiler.render_bind_cast() для отрисованного строкового представления каждого объекта BindParameter, тип диалектного уровня которого задает атрибут TypeEngine.render_bind_cast.

SQLCompiler.render_bind_cast() также используется для приведения для одной из форм запроса «insertmanyvalues», когда установлены InsertmanyvaluesSentinelOpts.USE_INSERT_FROM_SELECT и InsertmanyvaluesSentinelOpts.RENDER_SELECT_COL_CASTS, где приведение применяется к промежуточным столбцам, например, «INSERT INTO t (a, b, c) SELECT p0::TYP, p1::TYP, p2::TYP » «FROM (VALUES (?, ?), (?, ?), …)».

Добавлено в версии 2.0.10: - SQLCompiler.render_bind_cast() is now used within some elements of the «insertmanyvalues» implementation.

attribute sqlalchemy.engine.BindTyping.SETINPUTSIZES = 2

Используйте метод pep-249 setinputsizes.

Это реализовано только для DBAPI, которые поддерживают этот метод и для которых диалект SQLAlchemy имеет соответствующую инфраструктуру, установленную для этого диалекта. Текущие диалекты включают cx_Oracle, а также опциональную поддержку SQL Server с помощью pyodbc.

При использовании setinputsizes диалекты также имеют возможность использовать метод только для определенных типов данных с помощью списков include/exclude.

При использовании SETINPUTSIZES метод Dialect.do_set_input_sizes() вызывается для каждого выполняемого оператора, имеющего связанные параметры.

class sqlalchemy.engine.Compiled

Представляет скомпилированное выражение SQL или DDL.

Метод __str__ объекта Compiled должен выдать фактический текст утверждения. Объекты Compiled специфичны для их базового диалекта базы данных, а также могут быть или не быть специфичными для столбцов, на которые ссылается определенный набор параметров привязки. Ни в коем случае объект Compiled не должен зависеть от фактических значений этих параметров связывания, даже если он может ссылаться на эти значения по умолчанию.

method sqlalchemy.engine.Compiled.__init__(dialect: Dialect, statement: Optional[ClauseElement], schema_translate_map: Optional[SchemaTranslateMapType] = None, render_schema_translate: bool = False, compile_kwargs: Mapping[str, Any] = {})

Создайте новый объект Compiled.

Параметры:
  • dialectDialect для компиляции.

  • statementClauseElement для компиляции.

  • schema_translate_map – словарь имен схем, которые будут переведены при формировании результирующего SQL … см. также:: Перевод имен схем

  • compile_kwargs – дополнительные kwargs, которые будут переданы при первоначальном вызове Compiled.process().

attribute sqlalchemy.engine.Compiled.cache_key: Optional[CacheKey] = None

CacheKey, который был сгенерирован перед созданием этого объекта Compiled.

Используется для процедур, которым нужен доступ к исходному экземпляру CacheKey, сгенерированному, когда экземпляр Compiled был впервые кэширован, обычно для того, чтобы сверить исходный список объектов BindParameter со списком для каждого утверждения, который генерируется при каждом вызове.

attribute sqlalchemy.engine.Compiled.compile_state: Optional[CompileState] = None

Необязательный объект CompileState, который поддерживает дополнительное состояние, используемое компилятором.

Основные исполняемые объекты, такие как Insert, Update, Delete, Select, будут генерировать это состояние при компиляции, чтобы вычислить дополнительную информацию об объекте. Для исполняемого объекта верхнего уровня состояние может храниться здесь, где оно также может быть применимо для обработки набора результатов.

Добавлено в версии 1.4.

method sqlalchemy.engine.Compiled.construct_params(params: Optional[_CoreSingleExecuteParams] = None, extracted_parameters: Optional[Sequence[BindParameter[Any]]] = None, escape_names: bool = True) Optional[_MutableCoreSingleExecuteParams]

Возвращает параметры привязки для этого скомпилированного объекта.

Параметры:

params – dict пар строк/объектов, значения которых будут переопределять значения bind, скомпилированные в операторе.

attribute sqlalchemy.engine.Compiled.dml_compile_state: Optional[CompileState] = None

Необязательный CompileState назначается в тот же момент, когда назначается .isinsert, .isupdate или .isdelete.

Обычно это будет тот же объект, что и .compile_state, за исключением случаев, подобных объекту ORMFromStatementCompileState.

Добавлено в версии 1.4.40.

attribute sqlalchemy.engine.Compiled.execution_options: _ExecuteOptions = {}

Параметры выполнения, распространяемые из оператора. В некоторых случаях вложенные элементы утверждения могут изменять эти параметры.

attribute sqlalchemy.engine.Compiled.params

Возвращает параметры привязки для этого скомпилированного объекта.

attribute sqlalchemy.engine.Compiled.sql_compiler

Возвращает Compiled, способный обрабатывать выражения SQL.

Если компилятор один, то он, скорее всего, просто вернет „self“.

attribute sqlalchemy.engine.Compiled.state: CompilerState

описание состояния компилятора

attribute sqlalchemy.engine.Compiled.statement: Optional[ClauseElement] = None

Утверждение для компиляции.

attribute sqlalchemy.engine.Compiled.string: str = ''

Строковое представление statement.

class sqlalchemy.engine.interfaces.DBAPIConnection

протокол, представляющий соединение с базой данных PEP 249.

Добавлено в версии 2.0.

См.также

Connection Objects - в PEP 249

Классная подпись

класс sqlalchemy.engine.interfaces.DBAPIConnection (typing.Protocol)

attribute sqlalchemy.engine.interfaces.DBAPIConnection.autocommit: bool
method sqlalchemy.engine.interfaces.DBAPIConnection.close() None
method sqlalchemy.engine.interfaces.DBAPIConnection.commit() None
method sqlalchemy.engine.interfaces.DBAPIConnection.cursor() DBAPICursor
method sqlalchemy.engine.interfaces.DBAPIConnection.rollback() None
class sqlalchemy.engine.interfaces.DBAPICursor

протокол, представляющий курсор базы данных PEP 249.

Добавлено в версии 2.0.

См.также

Cursor Objects - в PEP 249

Классная подпись

класс sqlalchemy.engine.interfaces.DBAPICursor (typing.Protocol)

attribute sqlalchemy.engine.interfaces.DBAPICursor.arraysize: int
method sqlalchemy.engine.interfaces.DBAPICursor.callproc(procname: str, parameters: Sequence[Any] = Ellipsis) Any
method sqlalchemy.engine.interfaces.DBAPICursor.close() None
attribute sqlalchemy.engine.interfaces.DBAPICursor.description

Атрибут описания курсора.

См.также

cursor.description - в PEP 249

method sqlalchemy.engine.interfaces.DBAPICursor.execute(operation: Any, parameters: Optional[Union[Sequence[Any], Mapping[str, Any]]] = None) Any
method sqlalchemy.engine.interfaces.DBAPICursor.executemany(operation: Any, parameters: Sequence[Union[Sequence[Sequence[Any]], Sequence[Mapping[str, Any]]]]) Any
method sqlalchemy.engine.interfaces.DBAPICursor.fetchall() Sequence[Any]
method sqlalchemy.engine.interfaces.DBAPICursor.fetchmany(size: int = Ellipsis) Sequence[Any]
method sqlalchemy.engine.interfaces.DBAPICursor.fetchone() Optional[Any]
attribute sqlalchemy.engine.interfaces.DBAPICursor.lastrowid: int
method sqlalchemy.engine.interfaces.DBAPICursor.nextset() Optional[bool]
attribute sqlalchemy.engine.interfaces.DBAPICursor.rowcount
method sqlalchemy.engine.interfaces.DBAPICursor.setinputsizes(sizes: Sequence[Any]) None
method sqlalchemy.engine.interfaces.DBAPICursor.setoutputsize(size: Any, column: Any) None
class sqlalchemy.engine.interfaces.DBAPIType

протокол, представляющий тип базы данных PEP 249.

Добавлено в версии 2.0.

См.также

Type Objects - в PEP 249

Классная подпись

класс sqlalchemy.engine.interfaces.DBAPIType (typing.Protocol)

class sqlalchemy.sql.compiler.DDLCompiler

Классная подпись

класс sqlalchemy.sql.compiler.DDLCompiler (sqlalchemy.sql.compiler.Compiled)

method sqlalchemy.sql.compiler.DDLCompiler.__init__(dialect: Dialect, statement: Optional[ClauseElement], schema_translate_map: Optional[SchemaTranslateMapType] = None, render_schema_translate: bool = False, compile_kwargs: Mapping[str, Any] = {})

наследуется от sqlalchemy.sql.compiler.Compiled.__init__ метода Compiled

Создайте новый объект Compiled.

Параметры:
  • dialectDialect для компиляции.

  • statementClauseElement для компиляции.

  • schema_translate_map – словарь имен схем, которые будут переведены при формировании результирующего SQL … см. также:: Перевод имен схем

  • compile_kwargs – дополнительные kwargs, которые будут переданы при первоначальном вызове Compiled.process().

attribute sqlalchemy.sql.compiler.DDLCompiler.cache_key: Optional[CacheKey] = None

наследуется от Compiled.cache_key атрибута Compiled

CacheKey, который был сгенерирован перед созданием этого объекта Compiled.

Используется для процедур, которым нужен доступ к исходному экземпляру CacheKey, сгенерированному, когда экземпляр Compiled был впервые кэширован, обычно для того, чтобы сверить исходный список объектов BindParameter со списком для каждого утверждения, который генерируется при каждом вызове.

attribute sqlalchemy.sql.compiler.DDLCompiler.compile_state: Optional[CompileState] = None

наследуется от Compiled.compile_state атрибута Compiled

Необязательный объект CompileState, который поддерживает дополнительное состояние, используемое компилятором.

Основные исполняемые объекты, такие как Insert, Update, Delete, Select, будут генерировать это состояние при компиляции, чтобы вычислить дополнительную информацию об объекте. Для исполняемого объекта верхнего уровня состояние может храниться здесь, где оно также может быть применимо для обработки набора результатов.

Добавлено в версии 1.4.

method sqlalchemy.sql.compiler.DDLCompiler.construct_params(params: Optional[_CoreSingleExecuteParams] = None, extracted_parameters: Optional[Sequence[BindParameter[Any]]] = None, escape_names: bool = True) Optional[_MutableCoreSingleExecuteParams]

Возвращает параметры привязки для этого скомпилированного объекта.

Параметры:

params – dict пар строк/объектов, значения которых будут переопределять значения bind, скомпилированные в операторе.

method sqlalchemy.sql.compiler.DDLCompiler.define_constraint_remote_table(constraint, table, preparer)

Форматирование пункта удаленной таблицы в предложении CREATE CONSTRAINT.

attribute sqlalchemy.sql.compiler.DDLCompiler.dml_compile_state: Optional[CompileState] = None

наследуется от Compiled.dml_compile_state атрибута Compiled

Необязательный CompileState назначается в тот же момент, когда назначается .isinsert, .isupdate или .isdelete.

Обычно это будет тот же объект, что и .compile_state, за исключением случаев, подобных объекту ORMFromStatementCompileState.

Добавлено в версии 1.4.40.

attribute sqlalchemy.sql.compiler.DDLCompiler.execution_options: _ExecuteOptions = {}

наследуется от Compiled.execution_options атрибута Compiled

Параметры выполнения, распространяемые из оператора. В некоторых случаях вложенные элементы утверждения могут изменять эти параметры.

attribute sqlalchemy.sql.compiler.DDLCompiler.params

наследуется от Compiled.params атрибута Compiled

Возвращает параметры привязки для этого скомпилированного объекта.

attribute sqlalchemy.sql.compiler.DDLCompiler.sql_compiler
attribute sqlalchemy.sql.compiler.DDLCompiler.state: CompilerState

описание состояния компилятора

attribute sqlalchemy.sql.compiler.DDLCompiler.statement: Optional[ClauseElement] = None

наследуется от Compiled.statement атрибута Compiled

Утверждение для компиляции.

attribute sqlalchemy.sql.compiler.DDLCompiler.string: str = ''

наследуется от Compiled.string атрибута Compiled

Строковое представление statement.

class sqlalchemy.engine.default.DefaultDialect

Реализация диалекта по умолчанию

Members

bind_typing, colspecs, connect(), construct_arguments, create_connect_args(), create_xid(), cte_follows_insert, dbapi, dbapi_exception_translation_map, ddl_compiler, default_isolation_level, default_metavalue_token, default_schema_name, default_sequence_base, delete_executemany_returning, delete_returning, delete_returning_multifrom, denormalize_name(), div_is_floordiv, do_begin(), do_begin_twophase(), do_close(), do_commit(), do_commit_twophase(), do_execute(), do_execute_no_params(), do_executemany(), do_ping(), do_prepare_twophase(), do_recover_twophase(), do_release_savepoint(), do_rollback(), do_rollback_to_savepoint(), do_rollback_twophase(), do_savepoint(), do_set_input_sizes(), do_terminate(), driver, engine_config_types, engine_created(), exclude_set_input_sizes, execute_sequence_format, execution_ctx_cls, favor_returning_over_lastrowid, full_returning, get_async_dialect_cls(), get_check_constraints(), get_columns(), get_default_isolation_level(), get_dialect_cls(), get_dialect_pool_class(), get_driver_connection(), get_foreign_keys(), get_indexes(), get_isolation_level(), get_isolation_level_values(), get_materialized_view_names(), get_multi_check_constraints(), get_multi_columns(), get_multi_foreign_keys(), get_multi_indexes(), get_multi_pk_constraint(), get_multi_table_comment(), get_multi_table_options(), get_multi_unique_constraints(), get_pk_constraint(), get_schema_names(), get_sequence_names(), get_table_comment(), get_table_names(), get_table_options(), get_temp_table_names(), get_temp_view_names(), get_unique_constraints(), get_view_definition(), get_view_names(), has_index(), has_schema(), has_sequence(), has_table(), has_terminate, identifier_preparer, import_dbapi(), include_set_input_sizes, initialize(), inline_comments, insert_executemany_returning, insert_executemany_returning_sort_by_parameter_order, insert_returning, insertmanyvalues_implicit_sentinel, insertmanyvalues_max_parameters, insertmanyvalues_page_size, is_async, is_disconnect(), label_length, load_provisioning(), loaded_dbapi, max_identifier_length, name, normalize_name(), on_connect(), on_connect_url(), paramstyle, positional, preexecute_autoincrement_sequences, preparer, reflection_options, reset_isolation_level(), returns_native_bytes, sequences_optional, server_side_cursors, server_version_info, set_connection_execution_options(), set_engine_execution_options(), set_isolation_level(), statement_compiler, supports_alter, supports_comments, supports_constraint_comments, supports_default_metavalue, supports_default_values, supports_empty_insert, supports_identity_columns, supports_multivalues_insert, supports_native_boolean, supports_native_decimal, supports_native_enum, supports_native_uuid, supports_sane_multi_rowcount, supports_sane_rowcount, supports_sane_rowcount_returning, supports_sequences, supports_server_side_cursors, supports_simple_order_by_label, supports_statement_cache, tuple_in_values, type_compiler, type_compiler_cls, type_compiler_instance, type_descriptor(), update_executemany_returning, update_returning, update_returning_multifrom, use_insertmanyvalues, use_insertmanyvalues_wo_returning

attribute sqlalchemy.engine.default.DefaultDialect.bind_typing = 1

определить средства передачи информации о типе в базу данных и/или драйвер для связанных параметров.

Значения см. в разделе BindTyping.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.colspecs: MutableMapping[Type[TypeEngine[Any]], Type[TypeEngine[Any]]] = {}

Словарь классов TypeEngine из sqlalchemy.types, сопоставленных с подклассами, которые специфичны для класса диалекта. Этот словарь находится только на уровне класса и не доступен из самого экземпляра диалекта.

method sqlalchemy.engine.default.DefaultDialect.connect(*cargs, **cparams)

Установите соединение, используя DBAPI этого диалекта.

По умолчанию этот метод реализуется следующим образом:

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

Параметры *cargs, **cparams генерируются непосредственно из метода Dialect.create_connect_args() этого диалекта.

Этот метод можно использовать для диалектов, которым необходимо выполнять программные шаги для каждого соединения при получении нового соединения от DBAPI.

Параметры:
Результат:

соединение DBAPI, обычно из функции PEP 249 уровня модуля .connect().

attribute sqlalchemy.engine.default.DefaultDialect.construct_arguments: Optional[List[Tuple[Type[Union[SchemaItem, ClauseElement]], Mapping[str, Any]]]] = None

наследуется от Dialect.construct_arguments атрибута Dialect

Необязательный набор спецификаторов аргументов для различных конструкций SQLAlchemy, обычно элементов схемы.

Чтобы реализовать, создайте серию кортежей, как в:

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

Если приведенная выше конструкция установлена на диалекте PostgreSQL, то конструкция Index теперь будет принимать аргументы ключевых слов postgresql_using, postgresql_where, nad postgresql_ops. Любой другой аргумент, указанный конструктору Index, который имеет префикс postgresql_, вызовет ошибку ArgumentError.

Диалект, не включающий член construct_arguments, не будет участвовать в системе проверки аргументов. Для такого диалекта любое имя аргумента принимается всеми участвующими конструкциями в пределах пространства имен аргументов с префиксом этого имени диалекта. Это объясняется тем, что диалекты сторонних разработчиков, которые еще не реализовали эту возможность, продолжают работать по-старому.

См.также

DialectKWArgs - реализующий базовый класс, который потребляет DefaultDialect.construct_arguments

method sqlalchemy.engine.default.DefaultDialect.create_connect_args(url)

Построение аргументов подключения, совместимых с DB-API.

Учитывая объект URL, возвращает кортеж, состоящий из (*args, **kwargs), подходящих для отправки непосредственно в функцию connect dbapi. Аргументы передаются в метод Dialect.connect(), который затем запускает функцию connect() на уровне DBAPI.

Метод обычно использует метод URL.translate_connect_args() для генерации словаря опций.

По умолчанию используется:

def create_connect_args(self, url):
    opts = url.translate_connect_args()
    opts.update(url.query)
    return [[], opts]
Параметры:

url – объект URL

Результат:

кортеж (*args, **kwargs), который будет передан методу Dialect.connect().

method sqlalchemy.engine.default.DefaultDialect.create_xid()

Создайте случайный идентификатор двухфазной транзакции.

Этот идентификатор будет передан в do_begin_twophase(), do_rollback_twophase(), do_commit_twophase(). Его формат не определен.

attribute sqlalchemy.engine.default.DefaultDialect.cte_follows_insert: bool = False

целевая база данных, когда ей предоставляется CTE с оператором INSERT, требует, чтобы CTE находился ниже INSERT

attribute sqlalchemy.engine.default.DefaultDialect.dbapi: Optional[ModuleType]

Ссылка на сам объект модуля DBAPI.

Диалекты SQLAlchemy импортируют модули DBAPI с помощью метода класса Dialect.import_dbapi(). Это делается для того, чтобы любой модуль диалекта можно было импортировать и использовать для генерации SQL-запросов без необходимости установки фактического драйвера DBAPI. Только когда Engine создается с помощью create_engine(), DBAPI импортируется; в этот момент процесс создания назначает модуль DBAPI этому атрибуту.

Поэтому диалекты должны реализовать Dialect.import_dbapi(), который будет импортировать необходимый модуль и возвращать его, а затем ссылаться на self.dbapi в коде диалекта для того, чтобы обратиться к содержимому модуля DBAPI.

Изменено в версии The: <<<Атрибут Dialect.dbapi используется Dialect исключительно в качестве ссылки на модуль DBAPI для каждого экземпляра. Предыдущий не полностью документированный метод класса .Dialect.dbapi() устарел и заменен на Dialect.import_dbapi().

attribute sqlalchemy.engine.default.DefaultDialect.dbapi_exception_translation_map: Mapping[str, str] = {}

наследуется от Dialect.dbapi_exception_translation_map атрибута Dialect

Словарь имен, который будет содержать в качестве значений имена исключений pep-249 («IntegrityError», «OperationalError» и т.д.), привязанные к альтернативным именам классов, для поддержки случая, когда в DBAPI есть классы исключений, которые названы не так, как на них ссылаются (например, IntegrityError = MyException). В подавляющем большинстве случаев этот словарь пуст.

attribute sqlalchemy.engine.default.DefaultDialect.ddl_compiler

alias of DDLCompiler

attribute sqlalchemy.engine.default.DefaultDialect.default_isolation_level: Optional[IsolationLevel]

изоляция, которая неявно присутствует при новых соединениях

attribute sqlalchemy.engine.default.DefaultDialect.default_metavalue_token: str = 'DEFAULT'

для синтаксиса INSERT… VALUES (DEFAULT) синтаксис, маркер, который нужно поместить в круглую скобку.

attribute sqlalchemy.engine.default.DefaultDialect.default_schema_name: Optional[str] = None

имя схемы по умолчанию. Это значение доступно только для поддерживающих диалектов и обычно заполняется при первоначальном подключении к базе данных.

attribute sqlalchemy.engine.default.DefaultDialect.default_sequence_base: int = 1

значение по умолчанию, которое будет отображаться как часть «START WITH» в DDL-операторе CREATE SEQUENCE.

attribute sqlalchemy.engine.default.DefaultDialect.delete_executemany_returning: bool = False

диалект поддерживает DELETE…RETURNING с executemany.

attribute sqlalchemy.engine.default.DefaultDialect.delete_returning: bool = False

если диалект поддерживает возврат с помощью DELETE

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.delete_returning_multifrom: bool = False

если диалект поддерживает возврат с помощью DELETE..FROM

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.denormalize_name(name)

преобразовать заданное имя в нечувствительный к регистру идентификатор для бэкенда, если это имя в нижнем регистре.

Этот метод используется, только если диалект определяет require_name_normalize=True.

attribute sqlalchemy.engine.default.DefaultDialect.div_is_floordiv: bool = True

целевая база данных рассматривает оператор / деления как «деление на пол»

method sqlalchemy.engine.default.DefaultDialect.do_begin(dbapi_connection)

Обеспечьте реализацию connection.begin(), учитывая соединение DB-API.

В DBAPI нет специального метода «begin», и предполагается, что транзакции являются неявными. Этот крючок предоставляется для тех DBAPI, которым может понадобиться дополнительная помощь в этой области.

Параметры:

dbapi_connection – соединение DBAPI, обычно проксируемое внутри ConnectionFairy.

method sqlalchemy.engine.default.DefaultDialect.do_begin_twophase(connection: Connection, xid: Any) None

наследуется от Dialect.do_begin_twophase() метода Dialect

Начать двухфазную транзакцию на данном соединении.

Параметры:
method sqlalchemy.engine.default.DefaultDialect.do_close(dbapi_connection)

Обеспечьте реализацию connection.close(), учитывая соединение DBAPI.

Этот хук вызывается Pool, когда соединение было отсоединено от пула или возвращается за пределы нормальной емкости пула.

method sqlalchemy.engine.default.DefaultDialect.do_commit(dbapi_connection)

Обеспечьте реализацию connection.commit(), учитывая соединение DB-API.

Параметры:

dbapi_connection – соединение DBAPI, обычно проксируемое внутри ConnectionFairy.

method sqlalchemy.engine.default.DefaultDialect.do_commit_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) None

наследуется от Dialect.do_commit_twophase() метода Dialect

Выполнить двухфазную транзакцию на данном соединении.

Параметры:
  • connection – a Connection.

  • xid – xid

  • is_prepared – был ли вызван TwoPhaseTransaction.prepare() или нет.

  • recover – если был передан флаг восстановления.

method sqlalchemy.engine.default.DefaultDialect.do_execute(cursor, statement, parameters, context=None)

Обеспечьте реализацию cursor.execute(statement, parameters).

method sqlalchemy.engine.default.DefaultDialect.do_execute_no_params(cursor, statement, context=None)

Обеспечьте реализацию cursor.execute(statement).

Коллекция параметров не должна быть отправлена.

method sqlalchemy.engine.default.DefaultDialect.do_executemany(cursor, statement, parameters, context=None)

Обеспечьте реализацию cursor.executemany(statement, parameters).

method sqlalchemy.engine.default.DefaultDialect.do_ping(dbapi_connection: DBAPIConnection) bool

пропинговать соединение DBAPI и вернуть True, если соединение доступно.

method sqlalchemy.engine.default.DefaultDialect.do_prepare_twophase(connection: Connection, xid: Any) None

наследуется от Dialect.do_prepare_twophase() метода Dialect

Подготовьте двухфазную транзакцию на заданном соединении.

Параметры:
method sqlalchemy.engine.default.DefaultDialect.do_recover_twophase(connection: Connection) List[Any]

наследуется от Dialect.do_recover_twophase() метода Dialect

Восстановить список нефиксированных подготовленных идентификаторов двухфазных транзакций на данном соединении.

Параметры:

connection – a Connection.

method sqlalchemy.engine.default.DefaultDialect.do_release_savepoint(connection, name)

Освобождение именованной точки сохранения на соединении.

Параметры:
  • connection – a Connection.

  • name – имя точки сохранения.

method sqlalchemy.engine.default.DefaultDialect.do_rollback(dbapi_connection)

Обеспечьте реализацию connection.rollback(), учитывая соединение DB-API.

Параметры:

dbapi_connection – соединение DBAPI, обычно проксируемое внутри ConnectionFairy.

method sqlalchemy.engine.default.DefaultDialect.do_rollback_to_savepoint(connection, name)

Откат соединения к названной точке сохранения.

Параметры:
  • connection – a Connection.

  • name – имя точки сохранения.

method sqlalchemy.engine.default.DefaultDialect.do_rollback_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) None

наследуется от Dialect.do_rollback_twophase() метода Dialect

Откат двухфазной транзакции на данном соединении.

Параметры:
  • connection – a Connection.

  • xid – xid

  • is_prepared – был ли вызван TwoPhaseTransaction.prepare() или нет.

  • recover – если был передан флаг восстановления.

method sqlalchemy.engine.default.DefaultDialect.do_savepoint(connection, name)

Создает точку сохранения с заданным именем.

Параметры:
  • connection – a Connection.

  • name – имя точки сохранения.

method sqlalchemy.engine.default.DefaultDialect.do_set_input_sizes(cursor: DBAPICursor, list_of_tuples: _GenericSetInputSizesType, context: ExecutionContext) Any

наследуется от Dialect.do_set_input_sizes() метода Dialect

вызвать метод cursor.setinputsizes() с соответствующими аргументами

Этот хук вызывается, если атрибут Dialect.bind_typing установлен в значение BindTyping.SETINPUTSIZES. Данные параметра передаются в виде списка кортежей (paramname, dbtype, sqltype), где paramname - ключ параметра в операторе, dbtype - тип данных DBAPI и sqltype - тип SQLAlchemy. Порядок кортежей соответствует правильному порядку параметров.

Добавлено в версии 1.4.

Изменено в версии 2.0: - setinputsizes mode is now enabled by setting Dialect.bind_typing to BindTyping.SETINPUTSIZES. Dialects which accept a use_setinputsizes parameter should set this value appropriately.

method sqlalchemy.engine.default.DefaultDialect.do_terminate(dbapi_connection)

Предоставьте реализацию connection.close(), которая старается, насколько это возможно, не блокировать, учитывая соединение DBAPI.

В подавляющем большинстве случаев это просто вызов .close(), однако для некоторых диалектов asyncio могут использоваться другие функции API.

Этот хук вызывается Pool, когда соединение перерабатывается или было признано недействительным.

Добавлено в версии 1.4.41.

attribute sqlalchemy.engine.default.DefaultDialect.driver: str

идентификационное имя для DBAPI диалекта

attribute sqlalchemy.engine.default.DefaultDialect.engine_config_types: Mapping[str, Any] = {'echo': <function bool_or_str.<locals>.bool_or_value>, 'echo_pool': <function bool_or_str.<locals>.bool_or_value>, 'future': <function asbool>, 'max_overflow': <function asint>, 'pool_recycle': <function asint>, 'pool_size': <function asint>, 'pool_timeout': <function asint>}

отображение строковых ключей, которые могут быть в конфигурации движка связаны с функциями преобразования типов.

classmethod sqlalchemy.engine.default.DefaultDialect.engine_created(engine: Engine) None

наследуется от Dialect.engine_created() метода Dialect

Удобный хук, вызываемый перед возвратом окончательного Engine.

Если диалект вернул другой класс из метода get_dialect_cls(), то хук вызывается на обоих классах, сначала на классе диалекта, возвращенном методом get_dialect_cls(), а затем на классе, на котором был вызван метод.

Этот хук должен использоваться диалектами и/или обертками для применения специальных событий к движку или его компонентам. В частности, он позволяет классу-обертке диалекта применять события уровня диалекта.

attribute sqlalchemy.engine.default.DefaultDialect.exclude_set_input_sizes: Optional[Set[Any]] = None

набор объектов типа DBAPI, которые должны быть исключены в автоматических вызовах cursor.setinputsizes().

Это используется, только если bind_typing имеет значение BindTyping.SET_INPUT_SIZES

attribute sqlalchemy.engine.default.DefaultDialect.execute_sequence_format

alias of tuple

attribute sqlalchemy.engine.default.DefaultDialect.execution_ctx_cls

alias of DefaultExecutionContext

attribute sqlalchemy.engine.default.DefaultDialect.favor_returning_over_lastrowid: bool = False

для бэкендов, поддерживающих как lastrowid, так и стратегию вставки RETURNING, отдавайте предпочтение RETURNING для простых вставок с одним интом pk.

cursor.lastrowid имеет тенденцию быть более производительным на большинстве бэкендов.

attribute sqlalchemy.engine.default.DefaultDialect.full_returning

Не рекомендуется, начиная с версии 2.0: full_returning устарел, используйте insert_returning, update_returning, delete_returning

classmethod sqlalchemy.engine.default.DefaultDialect.get_async_dialect_cls(url: URL) Type[Dialect]

наследуется от Dialect.get_async_dialect_cls() метода Dialect

Учитывая URL, верните Dialect, который будет использоваться асинхронным механизмом.

По умолчанию это псевдоним Dialect.get_dialect_cls() и возвращает только cls. Он может использоваться, если диалект предоставляет синхронную и асинхронную версии под одним именем, как, например, драйвер psycopg.

Добавлено в версии 2.

См.также

Dialect.get_dialect_cls()

method sqlalchemy.engine.default.DefaultDialect.get_check_constraints(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedCheckConstraint]

наследуется от Dialect.get_check_constraints() метода Dialect

Возвращает информацию о контрольных ограничениях в table_name.

Учитывая строку table_name и необязательную строку schema, возвращает информацию об ограничениях проверки в виде списка dicts, соответствующего словарю ReflectedCheckConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_check_constraints().

method sqlalchemy.engine.default.DefaultDialect.get_columns(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedColumn]

наследуется от Dialect.get_columns() метода Dialect

Возвращает информацию о столбцах в table_name.

Учитывая Connection, строку table_name и необязательную строку schema, вернуть информацию о столбцах в виде списка словарей, соответствующих словарю ReflectedColumn.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_columns().

method sqlalchemy.engine.default.DefaultDialect.get_default_isolation_level(dbapi_conn)

Учитывая соединение DBAPI, верните его уровень изоляции или уровень изоляции по умолчанию, если он не может быть найден.

Может переопределяться подклассами, чтобы обеспечить «запасной» уровень изоляции для баз данных, которые не могут надежно получить фактический уровень изоляции.

По умолчанию вызывает метод Interfaces.get_isolation_level(), распространяя любые возникшие исключения.

Добавлено в версии 1.3.22.

classmethod sqlalchemy.engine.default.DefaultDialect.get_dialect_cls(url: URL) Type[Dialect]

наследуется от Dialect.get_dialect_cls() метода Dialect

Учитывая URL, возвращает Dialect, который будет использован.

Это крючок, который позволяет внешнему плагину предоставлять функциональность вокруг существующего диалекта, позволяя загружать плагин из url на основе точки входа, а затем плагин возвращает фактический диалект для использования.

По умолчанию возвращается только cls.

method sqlalchemy.engine.default.DefaultDialect.get_dialect_pool_class(url: URL) Type[Pool]

возвращает класс Pool для использования для заданного URL

method sqlalchemy.engine.default.DefaultDialect.get_driver_connection(connection)

Возвращает объект соединения, возвращенный внешним пакетом драйвера.

Для обычных диалектов, использующих драйвер, совместимый с DBAPI, этот вызов просто вернет connection, переданный в качестве аргумента. Для диалектов, которые вместо этого адаптируют драйвер, не совместимый с DBAPI, например, при адаптации драйвера asyncio, этот вызов вернет объект типа соединения, возвращаемый драйвером.

Добавлено в версии 1.4.24.

method sqlalchemy.engine.default.DefaultDialect.get_foreign_keys(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedForeignKeyConstraint]

наследуется от Dialect.get_foreign_keys() метода Dialect

Возвращает информацию об foreign_keys в table_name.

Учитывая Connection, строку table_name и необязательную строку schema, возвращает информацию о внешнем ключе в виде списка dicts, соответствующего словарю ReflectedForeignKeyConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_foreign_keys().

method sqlalchemy.engine.default.DefaultDialect.get_indexes(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedIndex]

наследуется от Dialect.get_indexes() метода Dialect

Возвращает информацию об индексах в table_name.

Учитывая Connection, строку table_name и необязательную строку schema, вернуть информацию об индексе в виде списка словарей, соответствующих словарю ReflectedIndex.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_indexes().

method sqlalchemy.engine.default.DefaultDialect.get_isolation_level(dbapi_connection: DBAPIConnection) Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']

наследуется от Dialect.get_isolation_level() метода Dialect

Учитывая соединение DBAPI, верните его уровень изоляции.

При работе с объектом Connection соответствующее соединение DBAPI может быть получено с помощью аксессора Connection.connection.

Обратите внимание, что это метод уровня диалекта, который используется как часть реализации средств уровня изоляции Connection и Engine; эти API следует предпочесть для большинства типичных случаев использования.

См.также

Connection.get_isolation_level() - просмотр текущего уровня

Connection.default_isolation_level - просмотр уровня по умолчанию

Connection.execution_options.isolation_level - устанавливается на уровень изоляции Connection

create_engine.isolation_level - устанавливается на уровень изоляции Engine

method sqlalchemy.engine.default.DefaultDialect.get_isolation_level_values(dbapi_conn: DBAPIConnection) List[Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']]

наследуется от Dialect.get_isolation_level_values() метода Dialect

возвращает последовательность строковых имен уровней изоляции, которые принимаются данным диалектом.

Доступные имена должны использовать следующие соглашения:

  • использовать имена UPPERCASE. Методы уровня изоляции принимают имена в нижнем регистре, но они нормализуются в UPPERCASE перед передачей в диалект.

  • отдельные слова должны разделяться пробелами, а не подчеркиваниями, например, REPEATABLE READ. имена уровня изоляции будут иметь подчеркивания, преобразованные в пробелы перед передачей в диалект.

  • Имена для четырех стандартных имен изоляции в той степени, в которой они поддерживаются бэкендом, должны быть READ UNCOMMITTED READ COMMITTED, REPEATABLE READ, SERIALIZABLE.

  • если диалект поддерживает опцию автокоммита, она должна быть предоставлена с использованием имени уровня изоляции AUTOCOMMIT.

  • Другие режимы изоляции также могут присутствовать, при условии, что они названы в UPPERCASE и используют пробелы, а не подчеркивания.

Эта функция используется для того, чтобы диалект по умолчанию мог проверить, является ли заданный параметр уровня изоляции действительным, в противном случае возникает ошибка ArgumentError.

В метод передается соединение DBAPI, в том маловероятном случае, если диалект должен сам опросить соединение для определения этого списка, однако ожидается, что большинство бэкендов вернут жестко закодированный список значений. Если диалект поддерживает «AUTOCOMMIT», это значение также должно присутствовать в возвращаемой последовательности.

По умолчанию метод выдает значение NotImplementedError. Если диалект не реализует этот метод, то диалект по умолчанию не будет выполнять никакой проверки заданного значения уровня изоляции перед передачей его в метод Dialect.set_isolation_level(). Это сделано для обеспечения обратной совместимости со сторонними диалектами, которые, возможно, еще не реализуют этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_materialized_view_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

наследуется от Dialect.get_materialized_view_names() метода Dialect

Возвращает список всех имен материализованных представлений, доступных в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_materialized_view_names().

Параметры:

schema – имя схемы для запроса, если это не схема по умолчанию. … versionadded:: 2.0

method sqlalchemy.engine.default.DefaultDialect.get_multi_check_constraints(connection, **kw)

Возвращает информацию о проверочных ограничениях во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_check_constraints().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_columns(connection, **kw)

Возвращает информацию о колонках во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_columns().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_foreign_keys(connection, **kw)

Возвращает информацию об foreign_keys во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_foreign_keys().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_indexes(connection, **kw)

Возвращает информацию об индексах во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_indexes().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_pk_constraint(connection, **kw)

Возвращает информацию об ограничениях первичного ключа во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_pk_constraint().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_table_comment(connection, **kw)

Возвращает информацию о комментарии таблицы во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_table_comment().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_table_options(connection, **kw)

Возвращает словарь опций, заданных при создании таблиц в данной схеме.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_table_options().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_multi_unique_constraints(connection, **kw)

Возвращает информацию об уникальных ограничениях во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_unique_constraints().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.get_pk_constraint(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) ReflectedPrimaryKeyConstraint

наследуется от Dialect.get_pk_constraint() метода Dialect

Возвращает информацию об ограничении первичного ключа для table_name`.

Учитывая Connection, строку table_name и необязательную строку schema, верните информацию о первичном ключе в виде словаря, соответствующего словарю ReflectedPrimaryKeyConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_pk_constraint().

method sqlalchemy.engine.default.DefaultDialect.get_schema_names(connection: Connection, **kw: Any) List[str]

наследуется от Dialect.get_schema_names() метода Dialect

Возвращает список всех имен схем, доступных в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_schema_names().

method sqlalchemy.engine.default.DefaultDialect.get_sequence_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

наследуется от Dialect.get_sequence_names() метода Dialect

Возвращает список всех имен последовательностей, имеющихся в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_sequence_names().

Параметры:

schema – имя схемы для запроса, если не используется схема по умолчанию.

Добавлено в версии 1.4.

method sqlalchemy.engine.default.DefaultDialect.get_table_comment(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) ReflectedTableComment

наследуется от Dialect.get_table_comment() метода Dialect

Возвращает «комментарий» для таблицы, идентифицированной table_name.

Учитывая строку table_name и необязательную строку schema, вернуть информацию о комментариях к таблице в виде словаря, соответствующего словарю ReflectedTableComment.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_table_comment().

поднять:

NotImplementedError для диалектов, которые не поддерживают комментарии.

Добавлено в версии 1.2.

method sqlalchemy.engine.default.DefaultDialect.get_table_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

наследуется от Dialect.get_table_names() метода Dialect

Возвращает список имен таблиц для schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_table_names().

method sqlalchemy.engine.default.DefaultDialect.get_table_options(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) Dict[str, Any]

наследуется от Dialect.get_table_options() метода Dialect

Возвращает словарь опций, заданных при создании table_name.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_table_options().

method sqlalchemy.engine.default.DefaultDialect.get_temp_table_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

наследуется от Dialect.get_temp_table_names() метода Dialect

Возвращает список имен временных таблиц на данном соединении, если это поддерживается базовым бэкендом.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_temp_table_names().

method sqlalchemy.engine.default.DefaultDialect.get_temp_view_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

наследуется от Dialect.get_temp_view_names() метода Dialect

Возвращает список временных имен представлений на данном соединении, если это поддерживается базовым бэкендом.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_temp_view_names().

method sqlalchemy.engine.default.DefaultDialect.get_unique_constraints(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedUniqueConstraint]

наследуется от Dialect.get_unique_constraints() метода Dialect

Возвращает информацию об уникальных ограничениях в table_name.

Учитывая строку table_name и необязательную строку schema, возвращает уникальную информацию об ограничениях в виде списка dicts, соответствующего словарю ReflectedUniqueConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_unique_constraints().

method sqlalchemy.engine.default.DefaultDialect.get_view_definition(connection: Connection, view_name: str, schema: Optional[str] = None, **kw: Any) str

наследуется от Dialect.get_view_definition() метода Dialect

Возвращает обычное или материализованное определение представления.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_view_definition().

Учитывая Connection, строку view_name и необязательную строку schema, верните определение представления.

method sqlalchemy.engine.default.DefaultDialect.get_view_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

наследуется от Dialect.get_view_names() метода Dialect

Возвращает список всех имен нематериализованных представлений, доступных в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_view_names().

Параметры:

schema – имя схемы для запроса, если не используется схема по умолчанию.

method sqlalchemy.engine.default.DefaultDialect.has_index(connection, table_name, index_name, schema=None, **kw)

Проверка существования определенного имени индекса в базе данных.

Учитывая объект Connection, строку table_name и строку index name, возвращает True, если индекс данного имени в данной таблице существует, False иначе.

В DefaultDialect это реализовано в методах Dialect.has_table() и Dialect.get_indexes(), однако диалекты могут реализовать более производительную версию.

Это внутренний метод диалекта. Приложения должны использовать Inspector.has_index().

Добавлено в версии 1.4.

method sqlalchemy.engine.default.DefaultDialect.has_schema(connection: Connection, schema_name: str, **kw: Any) bool

Проверьте существование определенного имени схемы в базе данных.

Учитывая объект Connection, строку schema_name, возвращает True, если схема данного существует, False иначе.

В DefaultDialect это реализовано путем проверки наличия schema_name среди схем, возвращаемых Dialect.get_schema_names(), однако диалекты могут реализовать более производительную версию.

Это внутренний метод диалекта. Приложения должны использовать Inspector.has_schema().

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.has_sequence(connection: Connection, sequence_name: str, schema: Optional[str] = None, **kw: Any) bool

наследуется от Dialect.has_sequence() метода Dialect

Проверка существования определенной последовательности в базе данных.

Учитывая объект Connection и строку имя_последовательности, возвращает True, если данная последовательность существует в базе данных, False в противном случае.

Это внутренний метод диалекта. Приложения должны использовать Inspector.has_sequence().

method sqlalchemy.engine.default.DefaultDialect.has_table(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) bool

наследуется от Dialect.has_table() метода Dialect

Для внутреннего использования диалекта, проверка существования определенной таблицы или представления в базе данных.

Учитывая объект Connection, строку table_name и необязательное имя схемы, возвращает True, если данная таблица существует в базе данных, False в противном случае.

Этот метод служит базовой реализацией публичного метода Inspector.has_table(), а также используется для реализации поведения «checkfirst» для таких методов, как Table.create() и MetaData.create_all().

Примечание

Этот метод используется внутри SQLAlchemy и публикуется для того, чтобы сторонние диалекты могли предоставить его реализацию. Это не публичный API для проверки наличия таблицы. Пожалуйста, используйте метод Inspector.has_table().

Изменено в версии 2.0::: Dialect.has_table() теперь формально поддерживает проверку дополнительных таблицеподобных объектов:

  • любые типы представлений (простые или материализованные)

  • временные таблицы любого вида

Ранее эти две проверки не были формально определены, и различные диалекты могли отличаться по своему поведению. Теперь набор тестов диалектов включает тесты для всех этих типов объектов, и диалекты в той степени, в которой опорная база данных поддерживает представления или временные таблицы, должны стремиться поддерживать нахождение этих объектов для полного соответствия требованиям.

attribute sqlalchemy.engine.default.DefaultDialect.has_terminate: bool = False

Имеет ли этот диалект отдельную реализацию «terminate», которая не блокирует и не требует ожидания.

attribute sqlalchemy.engine.default.DefaultDialect.identifier_preparer: IdentifierPreparer

Этот элемент будет ссылаться на экземпляр IdentifierPreparer после построения DefaultDialect.

classmethod sqlalchemy.engine.default.DefaultDialect.import_dbapi() module

наследуется от Dialect.import_dbapi() метода Dialect

Импортируйте модуль DBAPI, который используется этим диалектом.

Возвращенный здесь объект модуля Python будет присвоен в качестве переменной экземпляра построенному диалекту под именем .dbapi.

Изменено в версии 2.0: Метод класса Dialect.import_dbapi() переименован из предыдущего метода .Dialect.dbapi(), который был бы заменен при инстанцировании диалекта самим модулем DBAPI, таким образом, используя одно и то же имя двумя разными способами. Если метод класса .Dialect.dbapi() присутствует в стороннем диалекте, он будет использован, и будет выдано предупреждение об устаревании.

attribute sqlalchemy.engine.default.DefaultDialect.include_set_input_sizes: Optional[Set[Any]] = None

набор объектов типа DBAPI, которые должны быть включены в автоматические вызовы cursor.setinputsizes().

Это используется, только если bind_typing имеет значение BindTyping.SET_INPUT_SIZES

method sqlalchemy.engine.default.DefaultDialect.initialize(connection)

Вызывается во время стратегического создания диалекта с подключением.

Позволяет диалектам настраивать опции на основе информации о версии сервера или других свойств.

Передаваемое здесь соединение является объектом SQLAlchemy Connection с полными возможностями.

Метод initialize() базового диалекта должен вызываться через super().

Примечание

начиная с SQLAlchemy 1.4, этот метод вызывается перед вызовом любых крючков Dialect.on_connect().

attribute sqlalchemy.engine.default.DefaultDialect.inline_comments: bool = False

Указывает, что диалект поддерживает комментарии DDL, которые встроены в определение таблицы или столбца. Если False, это означает, что для установки комментариев таблиц и столбцов необходимо использовать ALTER.

attribute sqlalchemy.engine.default.DefaultDialect.insert_executemany_returning: bool

диалект / драйвер / база данных поддерживает некоторые средства обеспечения поддержки INSERT…RETURNING при использовании dialect.do_executemany().

attribute sqlalchemy.engine.default.DefaultDialect.insert_executemany_returning_sort_by_parameter_order: bool

диалект / драйвер / база данных поддерживает некоторые средства обеспечения поддержки INSERT…RETURNING, когда dialect.do_executemany() используется вместе с установленным параметром Insert.returning.sort_by_parameter_order.

attribute sqlalchemy.engine.default.DefaultDialect.insert_returning: bool = False

если диалект поддерживает RETURNING с INSERT

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.insertmanyvalues_implicit_sentinel: InsertmanyvaluesSentinelOpts = symbol('NOT_SUPPORTED')

Опции, указывающие, что база данных поддерживает форму массового INSERT, в которой автоинкрементный целочисленный первичный ключ может надежно использоваться в качестве порядка для вставляемых строк.

Добавлено в версии 2.0.10.

attribute sqlalchemy.engine.default.DefaultDialect.insertmanyvalues_max_parameters: int = 32700

Альтернатива insertmanyvalues_page_size, дополнительно ограничивает размер страницы в зависимости от общего количества параметров в операторе.

attribute sqlalchemy.engine.default.DefaultDialect.insertmanyvalues_page_size: int = 1000

Количество строк, выводимых в отдельный оператор INSERT..VALUES() для выполнения ExecuteStyle.INSERTMANYVALUES.

В диалекте по умолчанию это значение равно 1000.

Добавлено в версии 2.0.

См.также

Connection.execution_options.insertmanyvalues_page_size - вариант выполнения, доступный для Connection, утверждений

attribute sqlalchemy.engine.default.DefaultDialect.is_async: bool = False

Предназначен ли этот диалект для использования в asyncio.

method sqlalchemy.engine.default.DefaultDialect.is_disconnect(e, connection, cursor)

Возвращает True, если данная ошибка DB-API указывает на недействительное соединение

attribute sqlalchemy.engine.default.DefaultDialect.label_length: Optional[int]

опционально определяемая пользователем максимальная длина для меток SQL

classmethod sqlalchemy.engine.default.DefaultDialect.load_provisioning()

настроить модуль provision.py для этого диалекта.

Для диалектов, включающих модуль provision.py, который устанавливает последователей provisioning, этот метод должен инициировать этот процесс.

Типичная реализация выглядит следующим образом:

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

Метод по умолчанию предполагает наличие модуля с именем provision.py внутри пакета-владельца текущего диалекта, основываясь на атрибуте __module__:

@classmethod
def load_provisioning(cls):
    package = ".".join(cls.__module__.split(".")[0:-1])
    try:
        __import__(package + ".provision")
    except ImportError:
        pass

Добавлено в версии 1.3.14.

attribute sqlalchemy.engine.default.DefaultDialect.loaded_dbapi
attribute sqlalchemy.engine.default.DefaultDialect.max_identifier_length: int = 9999

Максимальная длина имен идентификаторов.

attribute sqlalchemy.engine.default.DefaultDialect.name: str = 'default'

идентификационное имя для диалекта с точки зрения DBAPI-нейтральности (например, „sqlite“)

method sqlalchemy.engine.default.DefaultDialect.normalize_name(name)

преобразовать заданное имя в нижний регистр, если оно определено как нечувствительное к регистру.

Этот метод используется, только если диалект определяет require_name_normalize=True.

method sqlalchemy.engine.default.DefaultDialect.on_connect()

возвращает вызываемый файл, который устанавливает вновь созданное DBAPI-соединение.

Вызываемый элемент должен принимать единственный аргумент «conn», который представляет собой само соединение DBAPI. Внутренний вызываемый модуль не имеет возвращаемого значения.

Например:

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

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

        return do_on_connect

Этот параметр используется для установки общих для диалекта опций для каждого соединения, таких как режимы изоляции, режимы Unicode и т.д.

Вызываемая переменная «do_on_connect» вызывается с помощью крючка события PoolEvents.connect(), затем разворачивает соединение DBAPI и передает его в вызываемую переменную.

Изменено в версии 1.4: хук on_connect больше не вызывается дважды для первого соединения диалекта. Однако хук on_connect по-прежнему вызывается перед методом Dialect.initialize().

Изменено в версии 1.4.3: хук on_connect вызывается из нового метода on_connect_url, который передает URL, использованный для создания аргументов подключения. Диалекты могут реализовать on_connect_url вместо on_connect, если им нужен объект URL, который был использован для соединения, чтобы получить дополнительный контекст.

Если возвращается None, то слушатель событий не создается.

Результат:

вызываемый объект, принимающий в качестве аргумента одно соединение DBAPI, или None.

См.также

Dialect.connect() - позволяет управлять самой последовательностью DBAPI connect().

Dialect.on_connect_url() - заменяет Dialect.on_connect(), чтобы также получить объект URL в контексте.

method sqlalchemy.engine.default.DefaultDialect.on_connect_url(url: URL) Optional[Callable[[Any], Any]]

наследуется от Dialect.on_connect_url() метода Dialect

возвращает вызываемый файл, который устанавливает вновь созданное DBAPI-соединение.

Этот метод представляет собой новый хук, который заменяет метод Dialect.on_connect(), если он реализован в диалекте. Когда он не реализован диалектом, он вызывает метод Dialect.on_connect() напрямую, чтобы сохранить совместимость с существующими диалектами. Для ожидаемого метода Dialect.on_connect() не предусмотрено никаких изъятий.

Вызываемый элемент должен принимать единственный аргумент «conn», который представляет собой само соединение DBAPI. Внутренний вызываемый модуль не имеет возвращаемого значения.

Например:

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

Этот параметр используется для установки общих для диалекта опций для каждого соединения, таких как режимы изоляции, режимы Unicode и т.д.

Этот метод отличается от Dialect.on_connect() тем, что ему передается объект URL, имеющий отношение к аргументам подключения. Обычно единственный способ получить это из хука Dialect.on_connect() - посмотреть на самом Engine, однако этот объект URL может быть заменен плагинами.

Примечание

Реализация Dialect.on_connect_url() по умолчанию заключается в вызове метода Dialect.on_connect(). Поэтому, если диалект реализует этот метод, метод Dialect.on_connect() не будет вызван, если только переопределяющий диалект не вызовет его непосредственно отсюда.

Добавлено в версии 1.4.3: добавил Dialect.on_connect_url(), который обычно вызывает Dialect.on_connect().

Параметры:

url – объект URL, представляющий URL, который был передан методу Dialect.create_connect_args().

Результат:

вызываемый объект, принимающий в качестве аргумента одно соединение DBAPI, или None.

См.также

Dialect.on_connect()

attribute sqlalchemy.engine.default.DefaultDialect.paramstyle: str

paramstyle, который будет использоваться (некоторые DB-API поддерживают несколько paramstyle).

attribute sqlalchemy.engine.default.DefaultDialect.positional: bool

True, если параметр paramstyle для этого диалекта является позиционным.

attribute sqlalchemy.engine.default.DefaultDialect.preexecute_autoincrement_sequences: bool = False

Истина, если „неявные“ функции первичного ключа должны быть выполнены отдельно, чтобы получить их значение, если не используется RETURNING.

В настоящее время это ориентировано на PostgreSQL, когда параметр implicit_returning=False используется на объекте Table.

attribute sqlalchemy.engine.default.DefaultDialect.preparer

alias of IdentifierPreparer

attribute sqlalchemy.engine.default.DefaultDialect.reflection_options: Sequence[str] = ()

наследуется от Dialect.reflection_options атрибута Dialect

Последовательность строковых имен, указывающих на аргументы ключевых слов, которые могут быть установлены на объекте Table, которые будут переданы как «опции отражения» при использовании Table.autoload_with.

Текущий пример - «oracle_resolve_synonyms» в диалекте Oracle.

method sqlalchemy.engine.default.DefaultDialect.reset_isolation_level(dbapi_conn)

Если дано соединение DBAPI, верните его изоляцию к значению по умолчанию.

Обратите внимание, что это метод уровня диалекта, который используется как часть реализации средств уровня изоляции Connection и Engine; эти API следует предпочесть для большинства типичных случаев использования.

См.также

Connection.get_isolation_level() - просмотр текущего уровня

Connection.default_isolation_level - просмотр уровня по умолчанию

Connection.execution_options.isolation_level - устанавливается на уровень изоляции Connection

create_engine.isolation_level - устанавливается на уровень изоляции Engine

attribute sqlalchemy.engine.default.DefaultDialect.returns_native_bytes: bool = False

указывает, возвращаются ли драйвером объекты Python bytes() для «бинарных» типов данных SQL.

Добавлено в версии 2.0.11.

attribute sqlalchemy.engine.default.DefaultDialect.sequences_optional: bool = False

Если True, указывает, должен ли параметр Sequence.optional в конструкции Sequence сигнализировать, чтобы не генерировать CREATE SEQUENCE. Применяется только в диалектах, поддерживающих последовательности. В настоящее время используется только для того, чтобы разрешить PostgreSQL SERIAL для столбца, который определяет Sequence() для использования на других бэкендах.

attribute sqlalchemy.engine.default.DefaultDialect.server_side_cursors: bool = False

deprecated; указывает, следует ли диалекту пытаться использовать курсоры на стороне сервера по умолчанию

attribute sqlalchemy.engine.default.DefaultDialect.server_version_info: Optional[Tuple[Any, ...]] = None

кортеж, содержащий номер версии используемого бэкенда БД.

Это значение доступно только для поддерживающих диалектов и обычно заполняется во время первоначального подключения к базе данных.

method sqlalchemy.engine.default.DefaultDialect.set_connection_execution_options(connection: Connection, opts: Mapping[str, Any]) None

Установите варианты выполнения для данного соединения.

Это реализуется DefaultDialect для того, чтобы реализовать опцию выполнения Connection.execution_options.isolation_level. Диалекты могут перехватывать различные варианты выполнения, которые могут потребовать изменения состояния на конкретном соединении DBAPI.

Добавлено в версии 1.4.

method sqlalchemy.engine.default.DefaultDialect.set_engine_execution_options(engine: Engine, opts: Mapping[str, Any]) None

Установите варианты выполнения для данного двигателя.

Это реализуется DefaultDialect для создания крючков событий для новых экземпляров Connection, созданных данным Engine, которые затем вызовут метод Dialect.set_connection_execution_options() для этого соединения.

method sqlalchemy.engine.default.DefaultDialect.set_isolation_level(dbapi_connection: DBAPIConnection, level: Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']) None

наследуется от Dialect.set_isolation_level() метода Dialect

Учитывая соединение DBAPI, установите его уровень изоляции.

Обратите внимание, что это метод уровня диалекта, который используется как часть реализации средств уровня изоляции Connection и Engine; эти API следует предпочесть для большинства типичных случаев использования.

Если диалект также реализует метод Dialect.get_isolation_level_values(), то заданный уровень гарантированно будет одним из строковых имен в этой последовательности, и методу не нужно будет предвидеть ошибку поиска.

См.также

Connection.get_isolation_level() - просмотр текущего уровня

Connection.default_isolation_level - просмотр уровня по умолчанию

Connection.execution_options.isolation_level - устанавливается на уровень изоляции Connection

create_engine.isolation_level - устанавливается на уровень изоляции Engine

attribute sqlalchemy.engine.default.DefaultDialect.statement_compiler

alias of SQLCompiler

attribute sqlalchemy.engine.default.DefaultDialect.supports_alter: bool = True

True если база данных поддерживает ALTER TABLE - используется только для генерации ограничений внешнего ключа в определенных обстоятельствах

attribute sqlalchemy.engine.default.DefaultDialect.supports_comments: bool = False

Указывает, что диалект поддерживает комментирование DDL для таблиц и столбцов.

attribute sqlalchemy.engine.default.DefaultDialect.supports_constraint_comments: bool = False

Указывает, поддерживает ли диалект комментарий DDL к ограничениям.

attribute sqlalchemy.engine.default.DefaultDialect.supports_default_metavalue: bool = False

диалект поддерживает INSERT… VALUES (DEFAULT) синтаксис

attribute sqlalchemy.engine.default.DefaultDialect.supports_default_values: bool = False

диалект поддерживает INSERT… синтаксис DEFAULT VALUES

attribute sqlalchemy.engine.default.DefaultDialect.supports_empty_insert: bool = True

диалект поддерживает INSERT () VALUES ()

attribute sqlalchemy.engine.default.DefaultDialect.supports_identity_columns: bool = False

целевая база данных поддерживает IDENTITY

attribute sqlalchemy.engine.default.DefaultDialect.supports_multivalues_insert: bool = False

Целевая база данных поддерживает INSERT…VALUES с несколькими наборами значений, т.е. INSERT INTO table (cols) VALUES (…), (…), (…), ….

attribute sqlalchemy.engine.default.DefaultDialect.supports_native_boolean: bool = False

Указывает, поддерживает ли диалект встроенную конструкцию boolean. Это не позволит Boolean генерировать ограничение CHECK при использовании этого типа.

attribute sqlalchemy.engine.default.DefaultDialect.supports_native_decimal: bool = False

указывает, обрабатываются ли и возвращаются ли объекты Decimal для точных числовых типов, или же возвращаются плавающие числа

attribute sqlalchemy.engine.default.DefaultDialect.supports_native_enum: bool = False

Указывает, поддерживает ли диалект родную конструкцию ENUM. Это предотвратит Enum от генерации ограничения CHECK, когда этот тип используется в «родном» режиме.

attribute sqlalchemy.engine.default.DefaultDialect.supports_native_uuid: bool = False

указывает, обрабатываются ли объекты Python UUID() нативно драйвером для типов данных SQL UUID.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.supports_sane_multi_rowcount: bool = True

Укажите, правильно ли диалект реализует подсчет рядов для операторов UPDATE и DELETE при выполнении через executemany.

attribute sqlalchemy.engine.default.DefaultDialect.supports_sane_rowcount: bool = True

Укажите, правильно ли диалект реализует подсчет рядов для операторов UPDATE и DELETE.

attribute sqlalchemy.engine.default.DefaultDialect.supports_sane_rowcount_returning

True, если этот диалект поддерживает нормальный подсчет рядов, даже если используется RETURNING.

Для диалектов, не поддерживающих RETURNING, это синоним supports_sane_rowcount.

attribute sqlalchemy.engine.default.DefaultDialect.supports_sequences: bool = False

Указывает, поддерживает ли диалект CREATE SEQUENCE или подобное.

attribute sqlalchemy.engine.default.DefaultDialect.supports_server_side_cursors: bool = False

указывает, поддерживает ли диалект курсоры на стороне сервера

attribute sqlalchemy.engine.default.DefaultDialect.supports_simple_order_by_label: bool = True

целевая база данных поддерживает ORDER BY <labelname>, где <labelname> относится к метке в предложении columns в SELECT

attribute sqlalchemy.engine.default.DefaultDialect.supports_statement_cache: bool = True

указывает, поддерживает ли этот диалект кэширование.

Все диалекты, совместимые с кэшированием утверждений, должны установить этот флаг в True непосредственно в каждом классе диалекта и подклассе, который его поддерживает. SQLAlchemy проверяет, что этот флаг локально присутствует в каждом подклассе диалекта, прежде чем использовать кэширование утверждений. Это необходимо для обеспечения безопасности старых или новых диалектов, которые еще не полностью протестированы на совместимость с кэшированием операторов SQL.

Добавлено в версии 1.4.5.

attribute sqlalchemy.engine.default.DefaultDialect.tuple_in_values: bool = False

целевая база данных поддерживает кортеж IN, т.е. (x, y) IN ((q, p), (r, z))

attribute sqlalchemy.engine.default.DefaultDialect.type_compiler: Any

наследие; это класс TypeCompiler на уровне класса, экземпляр TypeCompiler на уровне экземпляра.

Вместо этого обратитесь к type_compiler_instance.

attribute sqlalchemy.engine.default.DefaultDialect.type_compiler_cls

alias of GenericTypeCompiler

attribute sqlalchemy.engine.default.DefaultDialect.type_compiler_instance: TypeCompiler

экземпляр класса Compiled, используемого для компиляции объектов типа SQL

Добавлено в версии 2.0.

method sqlalchemy.engine.default.DefaultDialect.type_descriptor(typeobj)

Предоставьте специфичный для базы данных объект TypeEngine, учитывая общий объект, который поступает из модуля types.

Этот метод ищет словарь с именем colspecs как переменную на уровне класса или экземпляра и переходит к adapt_type().

attribute sqlalchemy.engine.default.DefaultDialect.update_executemany_returning: bool = False

диалект поддерживает UPDATE…RETURNING с executemany.

attribute sqlalchemy.engine.default.DefaultDialect.update_returning: bool = False

если диалект поддерживает RETURNING с UPDATE

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.update_returning_multifrom: bool = False

если диалект поддерживает RETURNING с UPDATE..FROM

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.use_insertmanyvalues: bool = False

если True, указывает, что следует использовать функциональность «insertmanyvalues», чтобы обеспечить поведение insert_executemany_returning, если это возможно.

На практике установка значения True означает:

Если supports_multivalues_insert, insert_returning и use_insertmanyvalues равны True, компилятор SQL создаст INSERT, который будет интерпретирован DefaultDialect как выполнение ExecuteStyle.INSERTMANYVALUES, что позволяет выполнять INSERT многих строк с RETURNING, переписывая однострочный оператор INSERT с несколькими пунктами VALUES, а также выполняя оператор несколько раз для серии пакетов, когда задано большое количество строк.

Параметр имеет значение False для диалекта по умолчанию и устанавливается в True для внутренних диалектов SQLAlchemy - SQLite, MySQL/MariaDB, PostgreSQL, SQL Server. Он остается в False для Oracle, который обеспечивает встроенную поддержку «executemany with RETURNING», а также не поддерживает supports_multivalues_insert. Для MySQL/MariaDB те диалекты MySQL, которые не поддерживают RETURNING, не будут сообщать insert_executemany_returning как True.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultDialect.use_insertmanyvalues_wo_returning: bool = False

если True, и use_insertmanyvalues также True, операторы INSERT, которые не включают RETURNING, также будут использовать «insertmanyvalues».

Добавлено в версии 2.0.

class sqlalchemy.engine.Dialect

Определите поведение конкретной базы данных и комбинации DB-API.

Любой аспект определения метаданных, генерации SQL-запросов, их выполнения, обработки наборов результатов и всего остального, что различается между базами данных, определяется под общей категорией диалекта. Диалект действует как фабрика для других реализаций объектов, специфичных для базы данных, включая ExecutionContext, Compiled, DefaultGenerator и TypeEngine.

Примечание

Диалекты сторонних производителей не должны подклассифицировать Dialect напрямую. Вместо этого подкласс DefaultDialect или класс-потомок.

Members

bind_typing, colspecs, connect(), construct_arguments, create_connect_args(), create_xid(), cte_follows_insert, dbapi, dbapi_exception_translation_map, ddl_compiler, default_isolation_level, default_metavalue_token, default_schema_name, default_sequence_base, delete_executemany_returning, delete_returning, delete_returning_multifrom, denormalize_name(), div_is_floordiv, do_begin(), do_begin_twophase(), do_close(), do_commit(), do_commit_twophase(), do_execute(), do_execute_no_params(), do_executemany(), do_ping(), do_prepare_twophase(), do_recover_twophase(), do_release_savepoint(), do_rollback(), do_rollback_to_savepoint(), do_rollback_twophase(), do_savepoint(), do_set_input_sizes(), do_terminate(), driver, engine_config_types, engine_created(), exclude_set_input_sizes, execute_sequence_format, execution_ctx_cls, favor_returning_over_lastrowid, get_async_dialect_cls(), get_check_constraints(), get_columns(), get_default_isolation_level(), get_dialect_cls(), get_dialect_pool_class(), get_driver_connection(), get_foreign_keys(), get_indexes(), get_isolation_level(), get_isolation_level_values(), get_materialized_view_names(), get_multi_check_constraints(), get_multi_columns(), get_multi_foreign_keys(), get_multi_indexes(), get_multi_pk_constraint(), get_multi_table_comment(), get_multi_table_options(), get_multi_unique_constraints(), get_pk_constraint(), get_schema_names(), get_sequence_names(), get_table_comment(), get_table_names(), get_table_options(), get_temp_table_names(), get_temp_view_names(), get_unique_constraints(), get_view_definition(), get_view_names(), has_index(), has_schema(), has_sequence(), has_table(), has_terminate, identifier_preparer, import_dbapi(), include_set_input_sizes, initialize(), inline_comments, insert_executemany_returning, insert_executemany_returning_sort_by_parameter_order, insert_returning, insertmanyvalues_implicit_sentinel, insertmanyvalues_max_parameters, insertmanyvalues_page_size, is_async, is_disconnect(), label_length, load_provisioning(), loaded_dbapi, max_identifier_length, name, normalize_name(), on_connect(), on_connect_url(), paramstyle, positional, preexecute_autoincrement_sequences, preparer, reflection_options, reset_isolation_level(), returns_native_bytes, sequences_optional, server_side_cursors, server_version_info, set_connection_execution_options(), set_engine_execution_options(), set_isolation_level(), statement_compiler, supports_alter, supports_comments, supports_constraint_comments, supports_default_metavalue, supports_default_values, supports_empty_insert, supports_identity_columns, supports_multivalues_insert, supports_native_boolean, supports_native_decimal, supports_native_enum, supports_native_uuid, supports_sane_multi_rowcount, supports_sane_rowcount, supports_sequences, supports_server_side_cursors, supports_simple_order_by_label, supports_statement_cache, tuple_in_values, type_compiler, type_compiler_cls, type_compiler_instance, type_descriptor(), update_executemany_returning, update_returning, update_returning_multifrom, use_insertmanyvalues, use_insertmanyvalues_wo_returning

Классная подпись

класс sqlalchemy.engine.Dialect (sqlalchemy.event.registry.EventTarget)

attribute sqlalchemy.engine.Dialect.bind_typing = 1

определить средства передачи информации о типе в базу данных и/или драйвер для связанных параметров.

Значения см. в разделе BindTyping.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.colspecs: MutableMapping[Type[TypeEngine[Any]], Type[TypeEngine[Any]]]

Словарь классов TypeEngine из sqlalchemy.types, сопоставленных с подклассами, которые специфичны для класса диалекта. Этот словарь находится только на уровне класса и не доступен из самого экземпляра диалекта.

method sqlalchemy.engine.Dialect.connect(*cargs: Any, **cparams: Any) DBAPIConnection

Установите соединение, используя DBAPI этого диалекта.

По умолчанию этот метод реализуется следующим образом:

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

Параметры *cargs, **cparams генерируются непосредственно из метода Dialect.create_connect_args() этого диалекта.

Этот метод можно использовать для диалектов, которым необходимо выполнять программные шаги для каждого соединения при получении нового соединения от DBAPI.

Параметры:
Результат:

соединение DBAPI, обычно из функции PEP 249 уровня модуля .connect().

attribute sqlalchemy.engine.Dialect.construct_arguments: Optional[List[Tuple[Type[Union[SchemaItem, ClauseElement]], Mapping[str, Any]]]] = None

Необязательный набор спецификаторов аргументов для различных конструкций SQLAlchemy, обычно элементов схемы.

Чтобы реализовать, создайте серию кортежей, как в:

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

Если приведенная выше конструкция установлена на диалекте PostgreSQL, то конструкция Index теперь будет принимать аргументы ключевых слов postgresql_using, postgresql_where, nad postgresql_ops. Любой другой аргумент, указанный конструктору Index, который имеет префикс postgresql_, вызовет ошибку ArgumentError.

Диалект, не включающий член construct_arguments, не будет участвовать в системе проверки аргументов. Для такого диалекта любое имя аргумента принимается всеми участвующими конструкциями в пределах пространства имен аргументов с префиксом этого имени диалекта. Это объясняется тем, что диалекты сторонних разработчиков, которые еще не реализовали эту возможность, продолжают работать по-старому.

См.также

DialectKWArgs - реализующий базовый класс, который потребляет DefaultDialect.construct_arguments

method sqlalchemy.engine.Dialect.create_connect_args(url: URL) ConnectArgsType

Построение аргументов подключения, совместимых с DB-API.

Учитывая объект URL, возвращает кортеж, состоящий из (*args, **kwargs), подходящих для отправки непосредственно в функцию connect dbapi. Аргументы передаются в метод Dialect.connect(), который затем запускает функцию connect() на уровне DBAPI.

Метод обычно использует метод URL.translate_connect_args() для генерации словаря опций.

По умолчанию используется:

def create_connect_args(self, url):
    opts = url.translate_connect_args()
    opts.update(url.query)
    return [[], opts]
Параметры:

url – объект URL

Результат:

кортеж (*args, **kwargs), который будет передан методу Dialect.connect().

method sqlalchemy.engine.Dialect.create_xid() Any

Создайте идентификатор двухфазной транзакции.

Этот идентификатор будет передан в do_begin_twophase(), do_rollback_twophase(), do_commit_twophase(). Его формат не определен.

attribute sqlalchemy.engine.Dialect.cte_follows_insert: bool

целевая база данных, когда ей предоставляется CTE с оператором INSERT, требует, чтобы CTE находился ниже INSERT

attribute sqlalchemy.engine.Dialect.dbapi: Optional[ModuleType]

Ссылка на сам объект модуля DBAPI.

Диалекты SQLAlchemy импортируют модули DBAPI с помощью метода класса Dialect.import_dbapi(). Это делается для того, чтобы любой модуль диалекта можно было импортировать и использовать для генерации SQL-запросов без необходимости установки фактического драйвера DBAPI. Только когда Engine создается с помощью create_engine(), DBAPI импортируется; в этот момент процесс создания назначает модуль DBAPI этому атрибуту.

Поэтому диалекты должны реализовать Dialect.import_dbapi(), который будет импортировать необходимый модуль и возвращать его, а затем ссылаться на self.dbapi в коде диалекта для того, чтобы обратиться к содержимому модуля DBAPI.

Изменено в версии The: <<<Атрибут Dialect.dbapi используется Dialect исключительно в качестве ссылки на модуль DBAPI для каждого экземпляра. Предыдущий не полностью документированный метод класса .Dialect.dbapi() устарел и заменен на Dialect.import_dbapi().

attribute sqlalchemy.engine.Dialect.dbapi_exception_translation_map: Mapping[str, str] = {}

Словарь имен, который будет содержать в качестве значений имена исключений pep-249 («IntegrityError», «OperationalError» и т.д.), привязанные к альтернативным именам классов, для поддержки случая, когда в DBAPI есть классы исключений, которые названы не так, как на них ссылаются (например, IntegrityError = MyException). В подавляющем большинстве случаев этот словарь пуст.

attribute sqlalchemy.engine.Dialect.ddl_compiler: Type[DDLCompiler]

класс Compiled, используемый для компиляции утверждений DDL

attribute sqlalchemy.engine.Dialect.default_isolation_level: Optional[IsolationLevel]

изоляция, которая неявно присутствует при новых соединениях

attribute sqlalchemy.engine.Dialect.default_metavalue_token: str = 'DEFAULT'

для синтаксиса INSERT… VALUES (DEFAULT) синтаксис, маркер, который нужно поместить в круглую скобку.

Например, для SQLite это ключевое слово «NULL».

attribute sqlalchemy.engine.Dialect.default_schema_name: Optional[str]

имя схемы по умолчанию. Это значение доступно только для поддерживающих диалектов и обычно заполняется при первоначальном подключении к базе данных.

attribute sqlalchemy.engine.Dialect.default_sequence_base: int

значение по умолчанию, которое будет отображаться как часть «START WITH» в DDL-операторе CREATE SEQUENCE.

attribute sqlalchemy.engine.Dialect.delete_executemany_returning: bool

диалект поддерживает DELETE…RETURNING с executemany.

attribute sqlalchemy.engine.Dialect.delete_returning: bool

если диалект поддерживает возврат с помощью DELETE

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.delete_returning_multifrom: bool

если диалект поддерживает возврат с помощью DELETE..FROM

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.denormalize_name(name: str) str

преобразовать заданное имя в нечувствительный к регистру идентификатор для бэкенда, если это имя в нижнем регистре.

Этот метод используется, только если диалект определяет require_name_normalize=True.

attribute sqlalchemy.engine.Dialect.div_is_floordiv: bool

целевая база данных рассматривает оператор / деления как «деление на пол»

method sqlalchemy.engine.Dialect.do_begin(dbapi_connection: PoolProxiedConnection) None

Обеспечьте реализацию connection.begin(), учитывая соединение DB-API.

В DBAPI нет специального метода «begin», и предполагается, что транзакции являются неявными. Этот крючок предоставляется для тех DBAPI, которым может понадобиться дополнительная помощь в этой области.

Параметры:

dbapi_connection – соединение DBAPI, обычно проксируемое внутри ConnectionFairy.

method sqlalchemy.engine.Dialect.do_begin_twophase(connection: Connection, xid: Any) None

Начать двухфазную транзакцию на данном соединении.

Параметры:
method sqlalchemy.engine.Dialect.do_close(dbapi_connection: DBAPIConnection) None

Обеспечьте реализацию connection.close(), учитывая соединение DBAPI.

Этот хук вызывается Pool, когда соединение было отсоединено от пула или возвращается за пределы нормальной емкости пула.

method sqlalchemy.engine.Dialect.do_commit(dbapi_connection: PoolProxiedConnection) None

Обеспечьте реализацию connection.commit(), учитывая соединение DB-API.

Параметры:

dbapi_connection – соединение DBAPI, обычно проксируемое внутри ConnectionFairy.

method sqlalchemy.engine.Dialect.do_commit_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) None

Выполнить двухфазную транзакцию на данном соединении.

Параметры:
  • connection – a Connection.

  • xid – xid

  • is_prepared – был ли вызван TwoPhaseTransaction.prepare() или нет.

  • recover – если был передан флаг восстановления.

method sqlalchemy.engine.Dialect.do_execute(cursor: DBAPICursor, statement: str, parameters: Optional[Union[Sequence[Any], Mapping[str, Any]]], context: Optional[ExecutionContext] = None) None

Обеспечьте реализацию cursor.execute(statement, parameters).

method sqlalchemy.engine.Dialect.do_execute_no_params(cursor: DBAPICursor, statement: str, context: Optional[ExecutionContext] = None) None

Обеспечьте реализацию cursor.execute(statement).

Коллекция параметров не должна быть отправлена.

method sqlalchemy.engine.Dialect.do_executemany(cursor: DBAPICursor, statement: str, parameters: Union[Sequence[Sequence[Any]], Sequence[Mapping[str, Any]]], context: Optional[ExecutionContext] = None) None

Обеспечьте реализацию cursor.executemany(statement, parameters).

method sqlalchemy.engine.Dialect.do_ping(dbapi_connection: DBAPIConnection) bool

пропинговать соединение DBAPI и вернуть True, если соединение доступно.

method sqlalchemy.engine.Dialect.do_prepare_twophase(connection: Connection, xid: Any) None

Подготовьте двухфазную транзакцию на заданном соединении.

Параметры:
method sqlalchemy.engine.Dialect.do_recover_twophase(connection: Connection) List[Any]

Восстановить список нефиксированных подготовленных идентификаторов двухфазных транзакций на данном соединении.

Параметры:

connection – a Connection.

method sqlalchemy.engine.Dialect.do_release_savepoint(connection: Connection, name: str) None

Освобождение именованной точки сохранения на соединении.

Параметры:
  • connection – a Connection.

  • name – имя точки сохранения.

method sqlalchemy.engine.Dialect.do_rollback(dbapi_connection: PoolProxiedConnection) None

Обеспечьте реализацию connection.rollback(), учитывая соединение DB-API.

Параметры:

dbapi_connection – соединение DBAPI, обычно проксируемое внутри ConnectionFairy.

method sqlalchemy.engine.Dialect.do_rollback_to_savepoint(connection: Connection, name: str) None

Откат соединения к названной точке сохранения.

Параметры:
  • connection – a Connection.

  • name – имя точки сохранения.

method sqlalchemy.engine.Dialect.do_rollback_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) None

Откат двухфазной транзакции на данном соединении.

Параметры:
  • connection – a Connection.

  • xid – xid

  • is_prepared – был ли вызван TwoPhaseTransaction.prepare() или нет.

  • recover – если был передан флаг восстановления.

method sqlalchemy.engine.Dialect.do_savepoint(connection: Connection, name: str) None

Создает точку сохранения с заданным именем.

Параметры:
  • connection – a Connection.

  • name – имя точки сохранения.

method sqlalchemy.engine.Dialect.do_set_input_sizes(cursor: DBAPICursor, list_of_tuples: _GenericSetInputSizesType, context: ExecutionContext) Any

вызвать метод cursor.setinputsizes() с соответствующими аргументами

Этот хук вызывается, если атрибут Dialect.bind_typing установлен в значение BindTyping.SETINPUTSIZES. Данные параметра передаются в виде списка кортежей (paramname, dbtype, sqltype), где paramname - ключ параметра в операторе, dbtype - тип данных DBAPI и sqltype - тип SQLAlchemy. Порядок кортежей соответствует правильному порядку параметров.

Добавлено в версии 1.4.

Изменено в версии 2.0: - setinputsizes mode is now enabled by setting Dialect.bind_typing to BindTyping.SETINPUTSIZES. Dialects which accept a use_setinputsizes parameter should set this value appropriately.

method sqlalchemy.engine.Dialect.do_terminate(dbapi_connection: DBAPIConnection) None

Предоставьте реализацию connection.close(), которая старается, насколько это возможно, не блокировать, учитывая соединение DBAPI.

В подавляющем большинстве случаев это просто вызов .close(), однако для некоторых диалектов asyncio могут использоваться другие функции API.

Этот хук вызывается Pool, когда соединение перерабатывается или было признано недействительным.

Добавлено в версии 1.4.41.

attribute sqlalchemy.engine.Dialect.driver: str

идентификационное имя для DBAPI диалекта

attribute sqlalchemy.engine.Dialect.engine_config_types: Mapping[str, Any]

отображение строковых ключей, которые могут быть в конфигурации движка связаны с функциями преобразования типов.

classmethod sqlalchemy.engine.Dialect.engine_created(engine: Engine) None

Удобный хук, вызываемый перед возвратом окончательного Engine.

Если диалект вернул другой класс из метода get_dialect_cls(), то хук вызывается на обоих классах, сначала на классе диалекта, возвращенном методом get_dialect_cls(), а затем на классе, на котором был вызван метод.

Этот хук должен использоваться диалектами и/или обертками для применения специальных событий к движку или его компонентам. В частности, он позволяет классу-обертке диалекта применять события уровня диалекта.

attribute sqlalchemy.engine.Dialect.exclude_set_input_sizes: Optional[Set[Any]]

набор объектов типа DBAPI, которые должны быть исключены в автоматических вызовах cursor.setinputsizes().

Это используется, только если bind_typing имеет значение BindTyping.SET_INPUT_SIZES

attribute sqlalchemy.engine.Dialect.execute_sequence_format: Union[Type[Tuple[Any, ...]], Type[Tuple[List[Any]]]]

либо тип „tuple“, либо „list“, в зависимости от того, что cursor.execute() принимает в качестве второго аргумента (они различаются).

attribute sqlalchemy.engine.Dialect.execution_ctx_cls: Type[ExecutionContext]

класс ExecutionContext, используемый для обработки выполнения операторов

attribute sqlalchemy.engine.Dialect.favor_returning_over_lastrowid: bool

для бэкендов, поддерживающих как lastrowid, так и стратегию вставки RETURNING, отдавайте предпочтение RETURNING для простых вставок с одним интом pk.

cursor.lastrowid имеет тенденцию быть более производительным на большинстве бэкендов.

classmethod sqlalchemy.engine.Dialect.get_async_dialect_cls(url: URL) Type[Dialect]

Учитывая URL, верните Dialect, который будет использоваться асинхронным механизмом.

По умолчанию это псевдоним Dialect.get_dialect_cls() и возвращает только cls. Он может использоваться, если диалект предоставляет синхронную и асинхронную версии под одним именем, как, например, драйвер psycopg.

Добавлено в версии 2.

См.также

Dialect.get_dialect_cls()

method sqlalchemy.engine.Dialect.get_check_constraints(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedCheckConstraint]

Возвращает информацию о контрольных ограничениях в table_name.

Учитывая строку table_name и необязательную строку schema, возвращает информацию об ограничениях проверки в виде списка dicts, соответствующего словарю ReflectedCheckConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_check_constraints().

method sqlalchemy.engine.Dialect.get_columns(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedColumn]

Возвращает информацию о столбцах в table_name.

Учитывая Connection, строку table_name и необязательную строку schema, вернуть информацию о столбцах в виде списка словарей, соответствующих словарю ReflectedColumn.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_columns().

method sqlalchemy.engine.Dialect.get_default_isolation_level(dbapi_conn: DBAPIConnection) Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']

Учитывая соединение DBAPI, верните его уровень изоляции или уровень изоляции по умолчанию, если он не может быть найден.

Этот метод может вызывать только NotImplementedError и не должен вызывать никаких других исключений, поскольку он используется неявно при первом подключении.

Метод должен возвращать значение для диалекта, поддерживающего настройки уровня изоляции, поскольку именно к этому уровню будет произведен возврат при изменении уровня изоляции для каждого соединения.

Метод по умолчанию использует метод Dialect.get_isolation_level(), если он не переопределен диалектом.

Добавлено в версии 1.3.22.

classmethod sqlalchemy.engine.Dialect.get_dialect_cls(url: URL) Type[Dialect]

Учитывая URL, возвращает Dialect, который будет использован.

Это крючок, который позволяет внешнему плагину предоставлять функциональность вокруг существующего диалекта, позволяя загружать плагин из url на основе точки входа, а затем плагин возвращает фактический диалект для использования.

По умолчанию возвращается только cls.

method sqlalchemy.engine.Dialect.get_dialect_pool_class(url: URL) Type[Pool]

возвращает класс Pool для использования для заданного URL

method sqlalchemy.engine.Dialect.get_driver_connection(connection: DBAPIConnection) Any

Возвращает объект соединения, возвращенный внешним пакетом драйвера.

Для обычных диалектов, использующих драйвер, совместимый с DBAPI, этот вызов просто вернет connection, переданный в качестве аргумента. Для диалектов, которые вместо этого адаптируют драйвер, не совместимый с DBAPI, например, при адаптации драйвера asyncio, этот вызов вернет объект типа соединения, возвращаемый драйвером.

Добавлено в версии 1.4.24.

method sqlalchemy.engine.Dialect.get_foreign_keys(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedForeignKeyConstraint]

Возвращает информацию об foreign_keys в table_name.

Учитывая Connection, строку table_name и необязательную строку schema, возвращает информацию о внешнем ключе в виде списка dicts, соответствующего словарю ReflectedForeignKeyConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_foreign_keys().

method sqlalchemy.engine.Dialect.get_indexes(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedIndex]

Возвращает информацию об индексах в table_name.

Учитывая Connection, строку table_name и необязательную строку schema, вернуть информацию об индексе в виде списка словарей, соответствующих словарю ReflectedIndex.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_indexes().

method sqlalchemy.engine.Dialect.get_isolation_level(dbapi_connection: DBAPIConnection) Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']

Учитывая соединение DBAPI, верните его уровень изоляции.

При работе с объектом Connection соответствующее соединение DBAPI может быть получено с помощью аксессора Connection.connection.

Обратите внимание, что это метод уровня диалекта, который используется как часть реализации средств уровня изоляции Connection и Engine; эти API следует предпочесть для большинства типичных случаев использования.

См.также

Connection.get_isolation_level() - просмотр текущего уровня

Connection.default_isolation_level - просмотр уровня по умолчанию

Connection.execution_options.isolation_level - устанавливается на уровень изоляции Connection

create_engine.isolation_level - устанавливается на уровень изоляции Engine

method sqlalchemy.engine.Dialect.get_isolation_level_values(dbapi_conn: DBAPIConnection) List[Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']]

возвращает последовательность строковых имен уровней изоляции, которые принимаются данным диалектом.

Доступные имена должны использовать следующие соглашения:

  • использовать имена UPPERCASE. Методы уровня изоляции принимают имена в нижнем регистре, но они нормализуются в UPPERCASE перед передачей в диалект.

  • отдельные слова должны разделяться пробелами, а не подчеркиваниями, например, REPEATABLE READ. имена уровня изоляции будут иметь подчеркивания, преобразованные в пробелы перед передачей в диалект.

  • Имена для четырех стандартных имен изоляции в той степени, в которой они поддерживаются бэкендом, должны быть READ UNCOMMITTED READ COMMITTED, REPEATABLE READ, SERIALIZABLE.

  • если диалект поддерживает опцию автокоммита, она должна быть предоставлена с использованием имени уровня изоляции AUTOCOMMIT.

  • Другие режимы изоляции также могут присутствовать, при условии, что они названы в UPPERCASE и используют пробелы, а не подчеркивания.

Эта функция используется для того, чтобы диалект по умолчанию мог проверить, является ли заданный параметр уровня изоляции действительным, в противном случае возникает ошибка ArgumentError.

В метод передается соединение DBAPI, в том маловероятном случае, если диалект должен сам опросить соединение для определения этого списка, однако ожидается, что большинство бэкендов вернут жестко закодированный список значений. Если диалект поддерживает «AUTOCOMMIT», это значение также должно присутствовать в возвращаемой последовательности.

По умолчанию метод выдает значение NotImplementedError. Если диалект не реализует этот метод, то диалект по умолчанию не будет выполнять никакой проверки заданного значения уровня изоляции перед передачей его в метод Dialect.set_isolation_level(). Это сделано для обеспечения обратной совместимости со сторонними диалектами, которые, возможно, еще не реализуют этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_materialized_view_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

Возвращает список всех имен материализованных представлений, доступных в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_materialized_view_names().

Параметры:

schema – имя схемы для запроса, если это не схема по умолчанию. … versionadded:: 2.0

method sqlalchemy.engine.Dialect.get_multi_check_constraints(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, List[ReflectedCheckConstraint]]]

Возвращает информацию о проверочных ограничениях во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_check_constraints().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_columns(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, List[ReflectedColumn]]]

Возвращает информацию о колонках во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_columns().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_foreign_keys(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, List[ReflectedForeignKeyConstraint]]]

Возвращает информацию об foreign_keys во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_foreign_keys().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_indexes(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, List[ReflectedIndex]]]

Возвращает информацию об индексах во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_indexes().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_pk_constraint(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, ReflectedPrimaryKeyConstraint]]

Возвращает информацию об ограничениях первичного ключа во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_pk_constraint().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_table_comment(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, ReflectedTableComment]]

Возвращает информацию о комментарии таблицы во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_table_comment().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_table_options(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, Dict[str, Any]]]

Возвращает словарь опций, заданных при создании таблиц в данной схеме.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_table_options().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_multi_unique_constraints(connection: Connection, schema: Optional[str] = None, filter_names: Optional[Collection[str]] = None, **kw: Any) Iterable[Tuple[TableKey, List[ReflectedUniqueConstraint]]]

Возвращает информацию об уникальных ограничениях во всех таблицах в заданном schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_multi_unique_constraints().

Примечание

DefaultDialect предоставляет реализацию по умолчанию, которая будет вызывать метод single table для каждого объекта, возвращаемого Dialect.get_table_names(), Dialect.get_view_names() или Dialect.get_materialized_view_names() в зависимости от предоставленного kind. Диалекты, которые хотят поддерживать более быструю реализацию, должны реализовать этот метод.

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.get_pk_constraint(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) ReflectedPrimaryKeyConstraint

Возвращает информацию об ограничении первичного ключа для table_name`.

Учитывая Connection, строку table_name и необязательную строку schema, верните информацию о первичном ключе в виде словаря, соответствующего словарю ReflectedPrimaryKeyConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_pk_constraint().

method sqlalchemy.engine.Dialect.get_schema_names(connection: Connection, **kw: Any) List[str]

Возвращает список всех имен схем, доступных в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_schema_names().

method sqlalchemy.engine.Dialect.get_sequence_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

Возвращает список всех имен последовательностей, имеющихся в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_sequence_names().

Параметры:

schema – имя схемы для запроса, если не используется схема по умолчанию.

Добавлено в версии 1.4.

method sqlalchemy.engine.Dialect.get_table_comment(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) ReflectedTableComment

Возвращает «комментарий» для таблицы, идентифицированной table_name.

Учитывая строку table_name и необязательную строку schema, вернуть информацию о комментариях к таблице в виде словаря, соответствующего словарю ReflectedTableComment.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_table_comment().

поднять:

NotImplementedError для диалектов, которые не поддерживают комментарии.

Добавлено в версии 1.2.

method sqlalchemy.engine.Dialect.get_table_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

Возвращает список имен таблиц для schema.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_table_names().

method sqlalchemy.engine.Dialect.get_table_options(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) Dict[str, Any]

Возвращает словарь опций, заданных при создании table_name.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_table_options().

method sqlalchemy.engine.Dialect.get_temp_table_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

Возвращает список имен временных таблиц на данном соединении, если это поддерживается базовым бэкендом.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_temp_table_names().

method sqlalchemy.engine.Dialect.get_temp_view_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

Возвращает список временных имен представлений на данном соединении, если это поддерживается базовым бэкендом.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_temp_view_names().

method sqlalchemy.engine.Dialect.get_unique_constraints(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) List[ReflectedUniqueConstraint]

Возвращает информацию об уникальных ограничениях в table_name.

Учитывая строку table_name и необязательную строку schema, возвращает уникальную информацию об ограничениях в виде списка dicts, соответствующего словарю ReflectedUniqueConstraint.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_unique_constraints().

method sqlalchemy.engine.Dialect.get_view_definition(connection: Connection, view_name: str, schema: Optional[str] = None, **kw: Any) str

Возвращает обычное или материализованное определение представления.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_view_definition().

Учитывая Connection, строку view_name и необязательную строку schema, верните определение представления.

method sqlalchemy.engine.Dialect.get_view_names(connection: Connection, schema: Optional[str] = None, **kw: Any) List[str]

Возвращает список всех имен нематериализованных представлений, доступных в базе данных.

Это внутренний метод диалекта. Приложения должны использовать Inspector.get_view_names().

Параметры:

schema – имя схемы для запроса, если не используется схема по умолчанию.

method sqlalchemy.engine.Dialect.has_index(connection: Connection, table_name: str, index_name: str, schema: Optional[str] = None, **kw: Any) bool

Проверка существования определенного имени индекса в базе данных.

Учитывая объект Connection, строку table_name и строку index name, возвращает True, если индекс данного имени в данной таблице существует, False иначе.

В DefaultDialect это реализовано в методах Dialect.has_table() и Dialect.get_indexes(), однако диалекты могут реализовать более производительную версию.

Это внутренний метод диалекта. Приложения должны использовать Inspector.has_index().

Добавлено в версии 1.4.

method sqlalchemy.engine.Dialect.has_schema(connection: Connection, schema_name: str, **kw: Any) bool

Проверьте существование определенного имени схемы в базе данных.

Учитывая объект Connection, строку schema_name, возвращает True, если схема данного существует, False иначе.

В DefaultDialect это реализовано путем проверки наличия schema_name среди схем, возвращаемых Dialect.get_schema_names(), однако диалекты могут реализовать более производительную версию.

Это внутренний метод диалекта. Приложения должны использовать Inspector.has_schema().

Добавлено в версии 2.0.

method sqlalchemy.engine.Dialect.has_sequence(connection: Connection, sequence_name: str, schema: Optional[str] = None, **kw: Any) bool

Проверка существования определенной последовательности в базе данных.

Учитывая объект Connection и строку имя_последовательности, возвращает True, если данная последовательность существует в базе данных, False в противном случае.

Это внутренний метод диалекта. Приложения должны использовать Inspector.has_sequence().

method sqlalchemy.engine.Dialect.has_table(connection: Connection, table_name: str, schema: Optional[str] = None, **kw: Any) bool

Для внутреннего использования диалекта, проверка существования определенной таблицы или представления в базе данных.

Учитывая объект Connection, строку table_name и необязательное имя схемы, возвращает True, если данная таблица существует в базе данных, False в противном случае.

Этот метод служит базовой реализацией публичного метода Inspector.has_table(), а также используется для реализации поведения «checkfirst» для таких методов, как Table.create() и MetaData.create_all().

Примечание

Этот метод используется внутри SQLAlchemy и публикуется для того, чтобы сторонние диалекты могли предоставить его реализацию. Это не публичный API для проверки наличия таблицы. Пожалуйста, используйте метод Inspector.has_table().

Изменено в версии 2.0::: Dialect.has_table() теперь формально поддерживает проверку дополнительных таблицеподобных объектов:

  • любые типы представлений (простые или материализованные)

  • временные таблицы любого вида

Ранее эти две проверки не были формально определены, и различные диалекты могли отличаться по своему поведению. Теперь набор тестов диалектов включает тесты для всех этих типов объектов, и диалекты в той степени, в которой опорная база данных поддерживает представления или временные таблицы, должны стремиться поддерживать нахождение этих объектов для полного соответствия требованиям.

attribute sqlalchemy.engine.Dialect.has_terminate: bool

Имеет ли этот диалект отдельную реализацию «terminate», которая не блокирует и не требует ожидания.

attribute sqlalchemy.engine.Dialect.identifier_preparer: IdentifierPreparer

Этот элемент будет ссылаться на экземпляр IdentifierPreparer после построения DefaultDialect.

classmethod sqlalchemy.engine.Dialect.import_dbapi() module

Импортируйте модуль DBAPI, который используется этим диалектом.

Возвращенный здесь объект модуля Python будет присвоен в качестве переменной экземпляра построенному диалекту под именем .dbapi.

Изменено в версии 2.0: Метод класса Dialect.import_dbapi() переименован из предыдущего метода .Dialect.dbapi(), который был бы заменен при инстанцировании диалекта самим модулем DBAPI, таким образом, используя одно и то же имя двумя разными способами. Если метод класса .Dialect.dbapi() присутствует в стороннем диалекте, он будет использован, и будет выдано предупреждение об устаревании.

attribute sqlalchemy.engine.Dialect.include_set_input_sizes: Optional[Set[Any]]

набор объектов типа DBAPI, которые должны быть включены в автоматические вызовы cursor.setinputsizes().

Это используется, только если bind_typing имеет значение BindTyping.SET_INPUT_SIZES

method sqlalchemy.engine.Dialect.initialize(connection: Connection) None

Вызывается во время стратегического создания диалекта с подключением.

Позволяет диалектам настраивать опции на основе информации о версии сервера или других свойств.

Передаваемое здесь соединение является объектом SQLAlchemy Connection с полными возможностями.

Метод initialize() базового диалекта должен вызываться через super().

Примечание

начиная с SQLAlchemy 1.4, этот метод вызывается перед вызовом любых крючков Dialect.on_connect().

attribute sqlalchemy.engine.Dialect.inline_comments: bool

Указывает, что диалект поддерживает комментарии DDL, которые встроены в определение таблицы или столбца. Если False, это означает, что для установки комментариев таблиц и столбцов необходимо использовать ALTER.

attribute sqlalchemy.engine.Dialect.insert_executemany_returning: bool

диалект / драйвер / база данных поддерживает некоторые средства обеспечения поддержки INSERT…RETURNING при использовании dialect.do_executemany().

attribute sqlalchemy.engine.Dialect.insert_executemany_returning_sort_by_parameter_order: bool

диалект / драйвер / база данных поддерживает некоторые средства обеспечения поддержки INSERT…RETURNING, когда dialect.do_executemany() используется вместе с установленным параметром Insert.returning.sort_by_parameter_order.

attribute sqlalchemy.engine.Dialect.insert_returning: bool

если диалект поддерживает RETURNING с INSERT

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.insertmanyvalues_implicit_sentinel: InsertmanyvaluesSentinelOpts

Опции, указывающие, что база данных поддерживает форму массового INSERT, в которой автоинкрементный целочисленный первичный ключ может надежно использоваться в качестве порядка для вставляемых строк.

Добавлено в версии 2.0.10.

attribute sqlalchemy.engine.Dialect.insertmanyvalues_max_parameters: int

Альтернатива insertmanyvalues_page_size, дополнительно ограничивает размер страницы в зависимости от общего количества параметров в операторе.

attribute sqlalchemy.engine.Dialect.insertmanyvalues_page_size: int

Количество строк, выводимых в отдельный оператор INSERT..VALUES() для выполнения ExecuteStyle.INSERTMANYVALUES.

В диалекте по умолчанию это значение равно 1000.

Добавлено в версии 2.0.

См.также

Connection.execution_options.insertmanyvalues_page_size - вариант выполнения, доступный для Connection, утверждений

attribute sqlalchemy.engine.Dialect.is_async: bool

Предназначен ли этот диалект для использования в asyncio.

method sqlalchemy.engine.Dialect.is_disconnect(e: Exception, connection: Optional[Union[PoolProxiedConnection, DBAPIConnection]], cursor: Optional[DBAPICursor]) bool

Возвращает True, если данная ошибка DB-API указывает на недействительное соединение

attribute sqlalchemy.engine.Dialect.label_length: Optional[int]

опционально определяемая пользователем максимальная длина для меток SQL

classmethod sqlalchemy.engine.Dialect.load_provisioning() None

настроить модуль provision.py для этого диалекта.

Для диалектов, включающих модуль provision.py, который устанавливает последователей provisioning, этот метод должен инициировать этот процесс.

Типичная реализация выглядит следующим образом:

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

Метод по умолчанию предполагает наличие модуля с именем provision.py внутри пакета-владельца текущего диалекта, основываясь на атрибуте __module__:

@classmethod
def load_provisioning(cls):
    package = ".".join(cls.__module__.split(".")[0:-1])
    try:
        __import__(package + ".provision")
    except ImportError:
        pass

Добавлено в версии 1.3.14.

attribute sqlalchemy.engine.Dialect.loaded_dbapi

то же самое, что и .dbapi, но никогда не является None; приведет к ошибке, если DBAPI не был установлен.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.max_identifier_length: int

Максимальная длина имен идентификаторов.

attribute sqlalchemy.engine.Dialect.name: str

идентификационное имя для диалекта с точки зрения DBAPI-нейтральности (например, „sqlite“)

method sqlalchemy.engine.Dialect.normalize_name(name: str) str

преобразовать заданное имя в нижний регистр, если оно определено как нечувствительное к регистру.

Этот метод используется, только если диалект определяет require_name_normalize=True.

method sqlalchemy.engine.Dialect.on_connect() Optional[Callable[[Any], Any]]

возвращает вызываемый файл, который устанавливает вновь созданное DBAPI-соединение.

Вызываемый элемент должен принимать единственный аргумент «conn», который представляет собой само соединение DBAPI. Внутренний вызываемый модуль не имеет возвращаемого значения.

Например:

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

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

        return do_on_connect

Этот параметр используется для установки общих для диалекта опций для каждого соединения, таких как режимы изоляции, режимы Unicode и т.д.

Вызываемая переменная «do_on_connect» вызывается с помощью крючка события PoolEvents.connect(), затем разворачивает соединение DBAPI и передает его в вызываемую переменную.

Изменено в версии 1.4: хук on_connect больше не вызывается дважды для первого соединения диалекта. Однако хук on_connect по-прежнему вызывается перед методом Dialect.initialize().

Изменено в версии 1.4.3: хук on_connect вызывается из нового метода on_connect_url, который передает URL, использованный для создания аргументов подключения. Диалекты могут реализовать on_connect_url вместо on_connect, если им нужен объект URL, который был использован для соединения, чтобы получить дополнительный контекст.

Если возвращается None, то слушатель событий не создается.

Результат:

вызываемый объект, принимающий в качестве аргумента одно соединение DBAPI, или None.

См.также

Dialect.connect() - позволяет управлять самой последовательностью DBAPI connect().

Dialect.on_connect_url() - заменяет Dialect.on_connect(), чтобы также получить объект URL в контексте.

method sqlalchemy.engine.Dialect.on_connect_url(url: URL) Optional[Callable[[Any], Any]]

возвращает вызываемый файл, который устанавливает вновь созданное DBAPI-соединение.

Этот метод представляет собой новый хук, который заменяет метод Dialect.on_connect(), если он реализован в диалекте. Когда он не реализован диалектом, он вызывает метод Dialect.on_connect() напрямую, чтобы сохранить совместимость с существующими диалектами. Для ожидаемого метода Dialect.on_connect() не предусмотрено никаких изъятий.

Вызываемый элемент должен принимать единственный аргумент «conn», который представляет собой само соединение DBAPI. Внутренний вызываемый модуль не имеет возвращаемого значения.

Например:

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

Этот параметр используется для установки общих для диалекта опций для каждого соединения, таких как режимы изоляции, режимы Unicode и т.д.

Этот метод отличается от Dialect.on_connect() тем, что ему передается объект URL, имеющий отношение к аргументам подключения. Обычно единственный способ получить это из хука Dialect.on_connect() - посмотреть на самом Engine, однако этот объект URL может быть заменен плагинами.

Примечание

Реализация Dialect.on_connect_url() по умолчанию заключается в вызове метода Dialect.on_connect(). Поэтому, если диалект реализует этот метод, метод Dialect.on_connect() не будет вызван, если только переопределяющий диалект не вызовет его непосредственно отсюда.

Добавлено в версии 1.4.3: добавил Dialect.on_connect_url(), который обычно вызывает Dialect.on_connect().

Параметры:

url – объект URL, представляющий URL, который был передан методу Dialect.create_connect_args().

Результат:

вызываемый объект, принимающий в качестве аргумента одно соединение DBAPI, или None.

См.также

Dialect.on_connect()

attribute sqlalchemy.engine.Dialect.paramstyle: str

paramstyle, который будет использоваться (некоторые DB-API поддерживают несколько paramstyle).

attribute sqlalchemy.engine.Dialect.positional: bool

True, если параметр paramstyle для этого диалекта является позиционным.

attribute sqlalchemy.engine.Dialect.preexecute_autoincrement_sequences: bool

Истина, если „неявные“ функции первичного ключа должны быть выполнены отдельно, чтобы получить их значение, если не используется RETURNING.

В настоящее время это ориентировано на PostgreSQL, когда параметр implicit_returning=False используется на объекте Table.

attribute sqlalchemy.engine.Dialect.preparer: Type[IdentifierPreparer]

класс IdentifierPreparer, используемый для цитирования идентификаторов.

attribute sqlalchemy.engine.Dialect.reflection_options: Sequence[str] = ()

Последовательность строковых имен, указывающих на аргументы ключевых слов, которые могут быть установлены на объекте Table, которые будут переданы как «опции отражения» при использовании Table.autoload_with.

Текущий пример - «oracle_resolve_synonyms» в диалекте Oracle.

method sqlalchemy.engine.Dialect.reset_isolation_level(dbapi_connection: DBAPIConnection) None

Если дано соединение DBAPI, верните его изоляцию к значению по умолчанию.

Обратите внимание, что это метод уровня диалекта, который используется как часть реализации средств уровня изоляции Connection и Engine; эти API следует предпочесть для большинства типичных случаев использования.

См.также

Connection.get_isolation_level() - просмотр текущего уровня

Connection.default_isolation_level - просмотр уровня по умолчанию

Connection.execution_options.isolation_level - устанавливается на уровень изоляции Connection

create_engine.isolation_level - устанавливается на уровень изоляции Engine

attribute sqlalchemy.engine.Dialect.returns_native_bytes: bool

указывает, возвращаются ли драйвером объекты Python bytes() для «бинарных» типов данных SQL.

Добавлено в версии 2.0.11.

attribute sqlalchemy.engine.Dialect.sequences_optional: bool

Если True, указывает, должен ли параметр Sequence.optional в конструкции Sequence сигнализировать, чтобы не генерировать CREATE SEQUENCE. Применяется только в диалектах, поддерживающих последовательности. В настоящее время используется только для того, чтобы разрешить PostgreSQL SERIAL для столбца, который определяет Sequence() для использования на других бэкендах.

attribute sqlalchemy.engine.Dialect.server_side_cursors: bool

deprecated; указывает, следует ли диалекту пытаться использовать курсоры на стороне сервера по умолчанию

attribute sqlalchemy.engine.Dialect.server_version_info: Optional[Tuple[Any, ...]]

кортеж, содержащий номер версии используемого бэкенда БД.

Это значение доступно только для поддерживающих диалектов и обычно заполняется во время первоначального подключения к базе данных.

method sqlalchemy.engine.Dialect.set_connection_execution_options(connection: Connection, opts: CoreExecuteOptionsParameter) None

Установите варианты выполнения для данного соединения.

Это реализуется DefaultDialect для того, чтобы реализовать опцию выполнения Connection.execution_options.isolation_level. Диалекты могут перехватывать различные варианты выполнения, которые могут потребовать изменения состояния на конкретном соединении DBAPI.

Добавлено в версии 1.4.

method sqlalchemy.engine.Dialect.set_engine_execution_options(engine: Engine, opts: CoreExecuteOptionsParameter) None

Установите варианты выполнения для данного двигателя.

Это реализуется DefaultDialect для создания крючков событий для новых экземпляров Connection, созданных данным Engine, которые затем вызовут метод Dialect.set_connection_execution_options() для этого соединения.

method sqlalchemy.engine.Dialect.set_isolation_level(dbapi_connection: DBAPIConnection, level: Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']) None

Учитывая соединение DBAPI, установите его уровень изоляции.

Обратите внимание, что это метод уровня диалекта, который используется как часть реализации средств уровня изоляции Connection и Engine; эти API следует предпочесть для большинства типичных случаев использования.

Если диалект также реализует метод Dialect.get_isolation_level_values(), то заданный уровень гарантированно будет одним из строковых имен в этой последовательности, и методу не нужно будет предвидеть ошибку поиска.

См.также

Connection.get_isolation_level() - просмотр текущего уровня

Connection.default_isolation_level - просмотр уровня по умолчанию

Connection.execution_options.isolation_level - устанавливается на уровень изоляции Connection

create_engine.isolation_level - устанавливается на уровень изоляции Engine

attribute sqlalchemy.engine.Dialect.statement_compiler: Type[SQLCompiler]

класс Compiled, используемый для компиляции SQL-запросов

attribute sqlalchemy.engine.Dialect.supports_alter: bool

True если база данных поддерживает ALTER TABLE - используется только для генерации ограничений внешнего ключа в определенных обстоятельствах

attribute sqlalchemy.engine.Dialect.supports_comments: bool

Указывает, что диалект поддерживает комментирование DDL для таблиц и столбцов.

attribute sqlalchemy.engine.Dialect.supports_constraint_comments: bool

Указывает, поддерживает ли диалект комментарий DDL к ограничениям.

attribute sqlalchemy.engine.Dialect.supports_default_metavalue: bool

Диалект поддерживает синтаксис INSERT…(col) VALUES (DEFAULT).

Большинство баз данных поддерживают это в той или иной форме, например, SQLite поддерживает это с помощью VALUES (NULL). MS SQL Server также поддерживает этот синтаксис, однако это единственный включенный диалект, где мы отключили эту функцию, так как MSSQL не поддерживает поле для столбца IDENTITY, который обычно является тем местом, где мы хотим использовать эту функцию.

attribute sqlalchemy.engine.Dialect.supports_default_values: bool

диалект поддерживает INSERT… синтаксис DEFAULT VALUES

attribute sqlalchemy.engine.Dialect.supports_empty_insert: bool

dialect поддерживает INSERT () VALUES (), т.е. обычный INSERT без столбцов.

Обычно это не поддерживается; для «пустой» вставки обычно используется либо «INSERT…DEFAULT VALUES», либо «INSERT … (col) VALUES (DEFAULT)».

attribute sqlalchemy.engine.Dialect.supports_identity_columns: bool

целевая база данных поддерживает IDENTITY

attribute sqlalchemy.engine.Dialect.supports_multivalues_insert: bool

Целевая база данных поддерживает INSERT…VALUES с несколькими наборами значений, т.е. INSERT INTO table (cols) VALUES (…), (…), (…), ….

attribute sqlalchemy.engine.Dialect.supports_native_boolean: bool

Указывает, поддерживает ли диалект встроенную конструкцию boolean. Это не позволит Boolean генерировать ограничение CHECK при использовании этого типа.

attribute sqlalchemy.engine.Dialect.supports_native_decimal: bool

указывает, обрабатываются ли и возвращаются ли объекты Decimal для точных числовых типов, или же возвращаются плавающие числа

attribute sqlalchemy.engine.Dialect.supports_native_enum: bool

Указывает, поддерживает ли диалект родную конструкцию ENUM. Это предотвратит Enum от генерации ограничения CHECK, когда этот тип используется в «родном» режиме.

attribute sqlalchemy.engine.Dialect.supports_native_uuid: bool

указывает, обрабатываются ли объекты Python UUID() нативно драйвером для типов данных SQL UUID.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.supports_sane_multi_rowcount: bool

Укажите, правильно ли диалект реализует подсчет рядов для операторов UPDATE и DELETE при выполнении через executemany.

attribute sqlalchemy.engine.Dialect.supports_sane_rowcount: bool

Укажите, правильно ли диалект реализует подсчет рядов для операторов UPDATE и DELETE.

attribute sqlalchemy.engine.Dialect.supports_sequences: bool

Указывает, поддерживает ли диалект CREATE SEQUENCE или подобное.

attribute sqlalchemy.engine.Dialect.supports_server_side_cursors: bool

указывает, поддерживает ли диалект курсоры на стороне сервера

attribute sqlalchemy.engine.Dialect.supports_simple_order_by_label: bool

целевая база данных поддерживает ORDER BY <labelname>, где <labelname> относится к метке в предложении columns в SELECT

attribute sqlalchemy.engine.Dialect.supports_statement_cache: bool = True

указывает, поддерживает ли этот диалект кэширование.

Все диалекты, совместимые с кэшированием утверждений, должны установить этот флаг в True непосредственно в каждом классе диалекта и подклассе, который его поддерживает. SQLAlchemy проверяет, что этот флаг локально присутствует в каждом подклассе диалекта, прежде чем использовать кэширование утверждений. Это необходимо для обеспечения безопасности старых или новых диалектов, которые еще не полностью протестированы на совместимость с кэшированием операторов SQL.

Добавлено в версии 1.4.5.

attribute sqlalchemy.engine.Dialect.tuple_in_values: bool

целевая база данных поддерживает кортеж IN, т.е. (x, y) IN ((q, p), (r, z))

attribute sqlalchemy.engine.Dialect.type_compiler: Any

наследие; это класс TypeCompiler на уровне класса, экземпляр TypeCompiler на уровне экземпляра.

Вместо этого обратитесь к type_compiler_instance.

attribute sqlalchemy.engine.Dialect.type_compiler_cls: ClassVar[Type[TypeCompiler]]

класс Compiled, используемый для компиляции объектов типа SQL

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.type_compiler_instance: TypeCompiler

экземпляр класса Compiled, используемого для компиляции объектов типа SQL

Добавлено в версии 2.0.

classmethod sqlalchemy.engine.Dialect.type_descriptor(typeobj: TypeEngine[_T]) TypeEngine[_T]

Преобразование общего типа в тип, специфичный для диалекта.

Диалектные классы обычно используют для этого функцию adapt_type() в модуле типов.

Возвращаемый результат кэшируется для класса диалекта, поэтому не может содержать состояние экземпляра диалекта.

attribute sqlalchemy.engine.Dialect.update_executemany_returning: bool

диалект поддерживает UPDATE…RETURNING с executemany.

attribute sqlalchemy.engine.Dialect.update_returning: bool

если диалект поддерживает RETURNING с UPDATE

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.update_returning_multifrom: bool

если диалект поддерживает RETURNING с UPDATE..FROM

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.use_insertmanyvalues: bool

если True, указывает, что следует использовать функциональность «insertmanyvalues», чтобы обеспечить поведение insert_executemany_returning, если это возможно.

На практике установка значения True означает:

Если supports_multivalues_insert, insert_returning и use_insertmanyvalues равны True, компилятор SQL создаст INSERT, который будет интерпретирован DefaultDialect как выполнение ExecuteStyle.INSERTMANYVALUES, что позволяет выполнять INSERT многих строк с RETURNING, переписывая однострочный оператор INSERT с несколькими пунктами VALUES, а также выполняя оператор несколько раз для серии пакетов, когда задано большое количество строк.

Параметр имеет значение False для диалекта по умолчанию и устанавливается в True для внутренних диалектов SQLAlchemy - SQLite, MySQL/MariaDB, PostgreSQL, SQL Server. Он остается в False для Oracle, который обеспечивает встроенную поддержку «executemany with RETURNING», а также не поддерживает supports_multivalues_insert. Для MySQL/MariaDB те диалекты MySQL, которые не поддерживают RETURNING, не будут сообщать insert_executemany_returning как True.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.Dialect.use_insertmanyvalues_wo_returning: bool

если True, и use_insertmanyvalues также True, операторы INSERT, которые не включают RETURNING, также будут использовать «insertmanyvalues».

Добавлено в версии 2.0.

class sqlalchemy.engine.default.DefaultExecutionContext
attribute sqlalchemy.engine.default.DefaultExecutionContext.compiled: Optional[Compiled] = None

если передан в конструктор, выполняемый объект sqlalchemy.engine.base.Compiled

attribute sqlalchemy.engine.default.DefaultExecutionContext.connection: Connection

Объект соединения, который может свободно использоваться генераторами значений по умолчанию для выполнения SQL. Это соединение должно ссылаться на то же самое базовое соединение/транзакционные ресурсы root_connection.

method sqlalchemy.engine.default.DefaultExecutionContext.create_cursor()

Возвращает новый курсор, созданный на основе соединения этого ExecutionContext.

Некоторые диалекты могут захотеть изменить поведение connection.cursor(), например, postgresql, который может возвращать курсор PG «на стороне сервера».

attribute sqlalchemy.engine.default.DefaultExecutionContext.current_parameters: Optional[_CoreSingleExecuteParams] = None

Словарь параметров, применяемых к текущей строке.

Этот атрибут доступен только в контексте определяемой пользователем функции генерации по умолчанию, например, как описано в Контекстно-зависимые функции по умолчанию. Он состоит из словаря, включающего записи для каждой пары столбец/значение, которая должна быть частью оператора INSERT или UPDATE. Ключами словаря будет ключевое значение каждого Column, которое обычно является синонимом имени.

Обратите внимание, что атрибут DefaultExecutionContext.current_parameters не учитывает «многозначность» метода Insert.values(). Следует предпочесть метод DefaultExecutionContext.get_current_parameters().

attribute sqlalchemy.engine.default.DefaultExecutionContext.cursor: DBAPICursor

Курсор DB-API, полученный из соединения

attribute sqlalchemy.engine.default.DefaultExecutionContext.dialect: Dialect

диалект, который создал этот ExecutionContext.

attribute sqlalchemy.engine.default.DefaultExecutionContext.engine: Engine

двигатель, с которым связано Соединение

attribute sqlalchemy.engine.default.DefaultExecutionContext.execute_style: ExecuteStyle = 0

стиль метода курсора DBAPI, который будет использоваться для выполнения оператора.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.default.DefaultExecutionContext.executemany: bool

Истина, если контекст имеет список из более чем одного набора параметров.

Исторически этот атрибут связан с тем, будет ли использоваться cursor.execute() или cursor.executemany(). Теперь он также может означать, что может использоваться «insertmanyvalues», что указывает на один или несколько вызовов cursor.execute().

method sqlalchemy.engine.default.DefaultExecutionContext.fetchall_for_returning(cursor)

Для получения результата RETURNING выполните cursor.fetchall() из курсора DBAPI.

Это специфичный для диалектов хук для диалектов, которые имеют особые соображения при обращении к строкам, доставленным для оператора «RETURNING». По умолчанию используется cursor.fetchall().

В настоящее время этот крючок используется только функцией insertmanyvalues. Диалектам, которые не устанавливают use_insertmanyvalues=True, не нужно учитывать этот крючок.

Добавлено в версии 2.0.10.

method sqlalchemy.engine.default.DefaultExecutionContext.get_current_parameters(isolate_multiinsert_groups=True)

Возвращает словарь параметров, примененных к текущей строке.

Этот метод можно использовать только в контексте определяемой пользователем функции генерации по умолчанию, например, как описано в Контекстно-зависимые функции по умолчанию. При вызове возвращается словарь, включающий записи для каждой пары столбец/значение, которая является частью оператора INSERT или UPDATE. Ключами словаря будет ключевое значение каждого Column, которое обычно является синонимом имени.

Параметры:

isolate_multiinsert_groups=True – указывает, что многозначные конструкции INSERT, созданные с помощью Insert.values(), должны обрабатываться путем возврата только подмножества параметров, локальных для текущего вызова по умолчанию столбца. При False возвращаются необработанные параметры оператора, включая соглашение об именовании, используемое в случае многозначного INSERT.

Добавлено в версии 1.2: добавлен атрибут DefaultExecutionContext.get_current_parameters(), который предоставляет больше функциональности, чем существующий атрибут DefaultExecutionContext.current_parameters.

method sqlalchemy.engine.default.DefaultExecutionContext.get_lastrowid()

возвращает self.cursor.lastrowid, или эквивалент, после INSERT.

Это может включать вызов специальных функций курсора, выдачу нового SELECT на курсоре (или нового курсора), или возврат сохраненного значения, которое было вычислено в post_exec().

Эта функция будет вызвана только для диалектов, которые поддерживают «неявное» создание первичного ключа, сохраняют значение False для функции preexecute_autoincrement_sequences, и когда к утверждению не было привязано явное значение id.

Функция вызывается один раз для оператора INSERT, который должен вернуть последний вставленный первичный ключ для тех диалектов, которые используют концепцию lastrowid. В этих случаях она вызывается непосредственно после ExecutionContext.post_exec().

method sqlalchemy.engine.default.DefaultExecutionContext.get_out_parameter_values(names)

Возвращает последовательность значений параметров OUT из курсора.

Для диалектов, поддерживающих параметры OUT, этот метод будет вызван при наличии объекта SQLCompiler, у которого установлен флаг SQLCompiler.has_out_parameters. Этот флаг, в свою очередь, будет установлен в True, если в самом операторе есть объекты BindParameter с установленным флагом .isoutparam, которые потребляются методом SQLCompiler.visit_bindparam(). Если компилятор диалекта производит объекты BindParameter с установленным флагом .isoutparam, которые не обрабатываются методом SQLCompiler.visit_bindparam(), он должен явно установить этот флаг.

В метод передается список имен, которые были отображены для каждого связанного параметра. Метод должен вернуть последовательность значений, соответствующих списку объектов параметров. В отличие от предыдущих версий SQLAlchemy, значения могут быть сырыми значениями из DBAPI; контекст выполнения применит соответствующий обработчик типов на основе того, что присутствует в self.compiled.binds, и обновит значения. Затем обработанный словарь будет доступен через коллекцию .out_parameters на объекте результата. Обратите внимание, что SQLAlchemy 1.4 имеет несколько видов объекта результата как часть перехода на 2.0.

Добавлено в версии 1.4: - added ExecutionContext.get_out_parameter_values(), which is invoked automatically by the DefaultExecutionContext when there are BindParameter objects with the .isoutparam flag set. This replaces the practice of setting out parameters within the now-removed get_result_proxy() method.

method sqlalchemy.engine.default.DefaultExecutionContext.get_result_processor(type_, colname, coltype)

Возвращает «обработчик результатов» для заданного типа, представленного в cursor.description.

Это реализация по умолчанию, которую диалекты могут переопределить для контекстно-зависимой обработки типов результатов.

method sqlalchemy.engine.default.DefaultExecutionContext.handle_dbapi_exception(e)

Получение исключения DBAPI, возникшего при выполнении, получении результата и т.д.

attribute sqlalchemy.engine.default.DefaultExecutionContext.invoked_statement: Optional[Executable] = None

Объект оператора Executable, который был задан в первую очередь.

Структурно он должен быть эквивалентен compiled.statement, но не обязательно тот же объект, так как в сценарии кэширования скомпилированная форма будет извлечена из кэша.

attribute sqlalchemy.engine.default.DefaultExecutionContext.isinsert: bool = False

Истина, если оператор является INSERT.

attribute sqlalchemy.engine.default.DefaultExecutionContext.isupdate: bool = False

True, если оператор является UPDATE.

method sqlalchemy.engine.default.DefaultExecutionContext.lastrow_has_defaults()

Возвращает True, если последняя строка INSERT или UPDATE содержала инлайны или значения по умолчанию со стороны базы данных.

attribute sqlalchemy.engine.default.DefaultExecutionContext.no_parameters: bool

Истина, если стиль выполнения не использует параметры

attribute sqlalchemy.engine.default.DefaultExecutionContext.parameters: _DBAPIMultiExecuteParams

связывание параметров, передаваемых методам execute() или exec_driver_sql().

Они всегда хранятся в виде списка записей параметров. Одноэлементный список соответствует вызову cursor.execute(), а многоэлементный - cursor.executemany(), за исключением случая ExecuteStyle.INSERTMANYVALUES, который будет использовать cursor.execute() один или несколько раз.

method sqlalchemy.engine.default.DefaultExecutionContext.post_exec()

Вызывается после выполнения скомпилированного оператора.

Если этому ExecutionContext был передан скомпилированный оператор, то после завершения этого метода должны быть доступны данные last_insert_ids, last_inserted_params и т.д.

attribute sqlalchemy.engine.default.DefaultExecutionContext.postfetch_cols: util.generic_fn_descriptor[Optional[Sequence[Column[Any]]]]

список объектов Column, для которых было отработано значение по умолчанию или встроенное значение выражения SQL на стороне сервера. Применяется к вставкам и обновлениям.

method sqlalchemy.engine.default.DefaultExecutionContext.pre_exec()

Вызывается перед выполнением скомпилированного оператора.

Если этому ExecutionContext был передан скомпилированный оператор, то члены данных statement и parameters должны быть инициализированы после завершения выполнения этого оператора.

attribute sqlalchemy.engine.default.DefaultExecutionContext.prefetch_cols: util.generic_fn_descriptor[Optional[Sequence[Column[Any]]]]

список объектов Column, для которых было отработано умолчание на стороне клиента. Применяется к вставкам и обновлениям.

attribute sqlalchemy.engine.default.DefaultExecutionContext.root_connection: Connection

Объект соединения, который является источником данного ExecutionContext.

class sqlalchemy.engine.ExecutionContext

Объект мессенджера для диалекта, который соответствует одному выполнению.

attribute sqlalchemy.engine.ExecutionContext.compiled: Optional[Compiled]

если передан в конструктор, выполняемый объект sqlalchemy.engine.base.Compiled

attribute sqlalchemy.engine.ExecutionContext.connection: Connection

Объект соединения, который может свободно использоваться генераторами значений по умолчанию для выполнения SQL. Это соединение должно ссылаться на то же самое базовое соединение/транзакционные ресурсы root_connection.

method sqlalchemy.engine.ExecutionContext.create_cursor() DBAPICursor

Возвращает новый курсор, созданный на основе соединения этого ExecutionContext.

Некоторые диалекты могут захотеть изменить поведение connection.cursor(), например, postgresql, который может возвращать курсор PG «на стороне сервера».

attribute sqlalchemy.engine.ExecutionContext.cursor: DBAPICursor

Курсор DB-API, полученный из соединения

attribute sqlalchemy.engine.ExecutionContext.dialect: Dialect

диалект, который создал этот ExecutionContext.

attribute sqlalchemy.engine.ExecutionContext.engine: Engine

двигатель, с которым связано Соединение

attribute sqlalchemy.engine.ExecutionContext.execute_style: ExecuteStyle

стиль метода курсора DBAPI, который будет использоваться для выполнения оператора.

Добавлено в версии 2.0.

attribute sqlalchemy.engine.ExecutionContext.executemany: bool

Истина, если контекст имеет список из более чем одного набора параметров.

Исторически этот атрибут связан с тем, будет ли использоваться cursor.execute() или cursor.executemany(). Теперь он также может означать, что может использоваться «insertmanyvalues», что указывает на один или несколько вызовов cursor.execute().

method sqlalchemy.engine.ExecutionContext.fetchall_for_returning(cursor: DBAPICursor) Sequence[Any]

Для получения результата RETURNING выполните cursor.fetchall() из курсора DBAPI.

Это специфичный для диалектов хук для диалектов, которые имеют особые соображения при обращении к строкам, доставленным для оператора «RETURNING». По умолчанию используется cursor.fetchall().

В настоящее время этот крючок используется только функцией insertmanyvalues. Диалектам, которые не устанавливают use_insertmanyvalues=True, не нужно учитывать этот крючок.

Добавлено в версии 2.0.10.

method sqlalchemy.engine.ExecutionContext.fire_sequence(seq: Sequence_SchemaItem, type_: Integer) int

дано Sequence, вызвать его и вернуть следующее значение int

method sqlalchemy.engine.ExecutionContext.get_out_parameter_values(out_param_names: Sequence[str]) Sequence[Any]

Возвращает последовательность значений параметров OUT из курсора.

Для диалектов, поддерживающих параметры OUT, этот метод будет вызван при наличии объекта SQLCompiler, у которого установлен флаг SQLCompiler.has_out_parameters. Этот флаг, в свою очередь, будет установлен в True, если в самом операторе есть объекты BindParameter с установленным флагом .isoutparam, которые потребляются методом SQLCompiler.visit_bindparam(). Если компилятор диалекта производит объекты BindParameter с установленным флагом .isoutparam, которые не обрабатываются методом SQLCompiler.visit_bindparam(), он должен явно установить этот флаг.

В метод передается список имен, которые были отображены для каждого связанного параметра. Метод должен вернуть последовательность значений, соответствующих списку объектов параметров. В отличие от предыдущих версий SQLAlchemy, значения могут быть сырыми значениями из DBAPI; контекст выполнения применит соответствующий обработчик типов на основе того, что присутствует в self.compiled.binds, и обновит значения. Затем обработанный словарь будет доступен через коллекцию .out_parameters на объекте результата. Обратите внимание, что SQLAlchemy 1.4 имеет несколько видов объекта результата как часть перехода на 2.0.

Добавлено в версии 1.4: - added ExecutionContext.get_out_parameter_values(), which is invoked automatically by the DefaultExecutionContext when there are BindParameter objects with the .isoutparam flag set. This replaces the practice of setting out parameters within the now-removed get_result_proxy() method.

method sqlalchemy.engine.ExecutionContext.get_rowcount() Optional[int]

Возвращает значение DBAPI cursor.rowcount, или в некоторых случаях интерпретированное значение.

Подробнее об этом смотрите CursorResult.rowcount.

method sqlalchemy.engine.ExecutionContext.handle_dbapi_exception(e: BaseException) None

Получение исключения DBAPI, возникшего при выполнении, получении результата и т.д.

attribute sqlalchemy.engine.ExecutionContext.invoked_statement: Optional[Executable]

Объект оператора Executable, который был задан в первую очередь.

Структурно он должен быть эквивалентен compiled.statement, но не обязательно тот же объект, так как в сценарии кэширования скомпилированная форма будет извлечена из кэша.

attribute sqlalchemy.engine.ExecutionContext.isinsert: bool

Истина, если оператор является INSERT.

attribute sqlalchemy.engine.ExecutionContext.isupdate: bool

True, если оператор является UPDATE.

method sqlalchemy.engine.ExecutionContext.lastrow_has_defaults() bool

Возвращает True, если последняя строка INSERT или UPDATE содержала инлайны или значения по умолчанию со стороны базы данных.

attribute sqlalchemy.engine.ExecutionContext.no_parameters: bool

Истина, если стиль выполнения не использует параметры

attribute sqlalchemy.engine.ExecutionContext.parameters: _AnyMultiExecuteParams

связывание параметров, передаваемых методам execute() или exec_driver_sql().

Они всегда хранятся в виде списка записей параметров. Одноэлементный список соответствует вызову cursor.execute(), а многоэлементный - cursor.executemany(), за исключением случая ExecuteStyle.INSERTMANYVALUES, который будет использовать cursor.execute() один или несколько раз.

method sqlalchemy.engine.ExecutionContext.post_exec() None

Вызывается после выполнения скомпилированного оператора.

Если этому ExecutionContext был передан скомпилированный оператор, то после завершения этого метода должны быть доступны данные last_insert_ids, last_inserted_params и т.д.

attribute sqlalchemy.engine.ExecutionContext.postfetch_cols: util.generic_fn_descriptor[Optional[Sequence[Column[Any]]]]

список объектов Column, для которых было отработано значение по умолчанию или встроенное значение выражения SQL на стороне сервера. Применяется к вставкам и обновлениям.

method sqlalchemy.engine.ExecutionContext.pre_exec() None

Вызывается перед выполнением скомпилированного оператора.

Если этому ExecutionContext был передан скомпилированный оператор, то члены данных statement и parameters должны быть инициализированы после завершения выполнения этого оператора.

attribute sqlalchemy.engine.ExecutionContext.prefetch_cols: util.generic_fn_descriptor[Optional[Sequence[Column[Any]]]]

список объектов Column, для которых было отработано умолчание на стороне клиента. Применяется к вставкам и обновлениям.

attribute sqlalchemy.engine.ExecutionContext.root_connection: Connection

Объект соединения, который является источником данного ExecutionContext.

attribute sqlalchemy.engine.ExecutionContext.statement: str

строковая версия оператора, который будет выполняться. Передается в конструктор или должна быть создана из объекта sql.Compiled к моменту завершения pre_exec().

class sqlalchemy.sql.compiler.ExpandedState

представляет состояние для использования при создании «расширенных» и «посткомпиляционных» связанных параметров для оператора.

«Расширенные» параметры - это параметры, которые генерируются во время выполнения оператора в соответствии с количеством переданных параметров, наиболее ярким примером являются отдельные элементы внутри выражения IN.

Параметры «post compile» - это параметры, в которых значение SQL литерала будет отображаться в SQL операторе во время выполнения, а не передаваться драйверу в виде отдельных параметров.

Чтобы создать экземпляр ExpandedState, используйте метод SQLCompiler.construct_expanded_state() на любом экземпляре SQLCompiler.

Классная подпись

класс sqlalchemy.sql.compiler.ExpandedState (builtins.tuple)

attribute sqlalchemy.sql.compiler.ExpandedState.additional_parameters

синоним для ExpandedState.parameters.

attribute sqlalchemy.sql.compiler.ExpandedState.parameter_expansion: Mapping[str, List[str]]

Отображение, представляющее промежуточную связь от исходного имени параметра к списку «расширенных» имен параметров, для тех параметров, которые были расширены.

attribute sqlalchemy.sql.compiler.ExpandedState.parameters: _CoreSingleExecuteParams

Словарь параметров с полностью развернутыми параметрами.

Для утверждения, использующего именованные параметры, этот словарь будет точно соответствовать именам в утверждении. Для оператора, который использует позиционные параметры, ExpandedState.positional_parameters даст кортеж с набором позиционных параметров.

attribute sqlalchemy.sql.compiler.ExpandedState.positional_parameters

Множество позиционных параметров для утверждений, которые были скомпилированы с использованием позиционного параметра.

attribute sqlalchemy.sql.compiler.ExpandedState.positiontup: Optional[Sequence[str]]

Последовательность строковых имен, указывающих порядок позиционных параметров

attribute sqlalchemy.sql.compiler.ExpandedState.processors: Mapping[str, _BindProcessorType[Any]]

отображение процессоров связанных значений

attribute sqlalchemy.sql.compiler.ExpandedState.statement: str

Строковый SQL-запрос с полностью развернутыми параметрами

class sqlalchemy.sql.compiler.GenericTypeCompiler

Members

ensure_kwarg

Классная подпись

класс sqlalchemy.sql.compiler.GenericTypeCompiler (sqlalchemy.sql.compiler.TypeCompiler)

attribute sqlalchemy.sql.compiler.GenericTypeCompiler.ensure_kwarg: str = 'visit_\\w+'

наследуется от TypeCompiler.ensure_kwarg атрибута TypeCompiler

регулярное выражение, указывающее имена методов, для которых метод должен принимать аргументы **kw.

Класс будет проверять методы, соответствующие шаблону имени, и при необходимости украшать их, чтобы обеспечить прием параметров **kw.

class sqlalchemy.log.Identified
class sqlalchemy.sql.compiler.IdentifierPreparer

Обработка кавычек и сложения регистра идентификаторов на основе опций.

method sqlalchemy.sql.compiler.IdentifierPreparer.__init__(dialect, initial_quote='"', final_quote=None, escape_quote='"', quote_case_sensitive_collations=True, omit_schema=False)

Создайте новый объект IdentifierPreparer.

initial_quote

Символ, с которого начинается разграниченный идентификатор.

заключительная_цитата

Символ, завершающий разграниченный идентификатор. По умолчанию initial_quote.

опустить_схему

Запретить добавление имени схемы. Полезно для баз данных, которые не поддерживают схемы.

method sqlalchemy.sql.compiler.IdentifierPreparer.format_column(column, use_table=False, name=None, table_name=None, use_schema=False, anon_map=None)

Подготовьте имя столбца в кавычках.

method sqlalchemy.sql.compiler.IdentifierPreparer.format_label_name(name, anon_map=None)

Подготовьте имя столбца в кавычках.

method sqlalchemy.sql.compiler.IdentifierPreparer.format_schema(name)

Подготовьте цитируемое имя схемы.

method sqlalchemy.sql.compiler.IdentifierPreparer.format_table(table, use_schema=True, name=None)

Подготовьте цитируемое имя таблицы и схемы.

method sqlalchemy.sql.compiler.IdentifierPreparer.format_table_seq(table, use_schema=True)

Форматируйте имя таблицы и схему в виде кортежа.

method sqlalchemy.sql.compiler.IdentifierPreparer.quote(ident: str, force: Optional[Any] = None) str

Условное цитирование идентификатора.

Идентификатор заключается в кавычки, если он является зарезервированным словом, содержит символы, необходимые для кавычек, или является экземпляром quoted_name, который включает quote, установленный в True.

Подклассы могут переопределить этот параметр, чтобы обеспечить зависящее от базы данных поведение цитирования имен идентификаторов.

Параметры:
  • ident – строковый идентификатор

  • force – не используется … устаревший:: 0.9 Параметр IdentifierPreparer.quote.force является устаревшим и будет удален в одном из будущих выпусков. Этот флаг не влияет на поведение метода IdentifierPreparer.quote(); пожалуйста, обратитесь к quoted_name.

method sqlalchemy.sql.compiler.IdentifierPreparer.quote_identifier(value: str) str

Процитируйте идентификатор.

Подклассы должны переопределить его, чтобы обеспечить поведение цитирования в зависимости от базы данных.

method sqlalchemy.sql.compiler.IdentifierPreparer.quote_schema(schema: str, force: Optional[Any] = None) str

Условное цитирование имени схемы.

Имя берется в кавычки, если оно является зарезервированным словом, содержит символы, необходимые для кавычек, или является экземпляром quoted_name, который включает quote, установленный в True.

Подклассы могут переопределить его, чтобы обеспечить зависящее от базы данных поведение цитирования имен схем.

Параметры:
  • schema – строковое имя схемы

  • force – не используется … устаревший:: 0.9 Параметр IdentifierPreparer.quote_schema.force является устаревшим и будет удален в одном из будущих выпусков. Этот флаг не влияет на поведение метода IdentifierPreparer.quote(); пожалуйста, обратитесь к quoted_name.

attribute sqlalchemy.sql.compiler.IdentifierPreparer.schema_for_object: _SchemaForObjectCallable = operator.attrgetter('schema')

Возвращает атрибут .schema для объекта.

Для IdentifierPreparer по умолчанию схема для объекта всегда является значением атрибута «.schema». Если preparer заменяется на тот, который имеет непустую карту schema_translate_map, значение атрибута «.schema» отображается как символ, который будет преобразован в реальное имя схемы из карты после компиляции.

method sqlalchemy.sql.compiler.IdentifierPreparer.unformat_identifiers(identifiers)

Распакуйте „schema.table.column“-подобные строки в компоненты.

method sqlalchemy.sql.compiler.IdentifierPreparer.validate_sql_phrase(element, reg)

фильтр последовательности ключевых слов.

фильтр для элементов, которые предназначены для представления последовательностей ключевых слов, таких как «INITIALLY», «INITIALLY DEFERRED» и т.д. никакие специальные символы не должны присутствовать.

Добавлено в версии 1.3.

class sqlalchemy.sql.compiler.SQLCompiler

Реализация по умолчанию Compiled.

Компилирует объекты ClauseElement в строки SQL.

Классная подпись

класс sqlalchemy.sql.compiler.SQLCompiler (sqlalchemy.sql.compiler.Compiled)

method sqlalchemy.sql.compiler.SQLCompiler.__init__(dialect: Dialect, statement: Optional[ClauseElement], cache_key: Optional[CacheKey] = None, column_keys: Optional[Sequence[str]] = None, for_executemany: bool = False, linting: Linting = Linting.NO_LINTING, **kwargs: Any)

Создайте новый объект SQLCompiler.

Параметры:
  • dialectDialect будет использоваться

  • statementClauseElement должен быть скомпилирован

  • column_keys – список имен столбцов для составления оператора INSERT или UPDATE.

  • for_executemany – должны ли операторы INSERT / UPDATE ожидать, что они будут вызваны в стиле «executemany», что может повлиять на то, как оператор будет возвращать значения по умолчанию, автоинкремента / последовательности и т.д. В зависимости от используемого бэкенда и драйвера, поддержка получения этих значений может быть отключена, что означает, что SQL выражения могут быть отображены в строке, RETURNING может быть не отображен и т.д.

  • kwargs – дополнительные аргументы ключевых слов, которые будут потребляться суперклассом.

attribute sqlalchemy.sql.compiler.SQLCompiler.ansi_bind_rules: bool = False

SQL 92 не позволяет использовать параметры связывания в предложении columns в SELECT, а также не допускает двусмысленных выражений типа «? = ?». Подкласс компилятора может установить этот флаг в False, если целевой драйвер/БД обеспечивает соблюдение этого требования.

attribute sqlalchemy.sql.compiler.SQLCompiler.bind_names: Dict[BindParameter[Any], str]

словарь экземпляров BindParameter для «скомпилированных» имен, которые действительно присутствуют в сгенерированном SQL

attribute sqlalchemy.sql.compiler.SQLCompiler.bindname_escape_characters: ClassVar[Mapping[str, str]] = {' ': '_', '%': 'P', '(': 'A', ')': 'Z', '.': '_', ':': 'C', '[': '_', ']': '_'}

Отображение (например, dict или аналогичное), содержащее поиск символов, ключевых для символов замены, которые будут применяться ко всем «связывающим именам», используемым в SQL-запросах в качестве формы «экранирования»; заданные символы полностью заменяются символом «замены» при отображении в SQL-запросе, и аналогичный перевод выполняется для входящих имен, используемых в словарях параметров, передаваемых методам типа Connection.execute().

Это позволяет связанным именам параметров, используемым в bindparam() и других конструкциях, содержать любые произвольные символы, не беспокоясь о символах, которые вообще не разрешены в целевой базе данных.

Сторонние диалекты могут создать здесь свой собственный словарь для замены отображения по умолчанию, что гарантирует, что конкретные символы в отображении никогда не появятся в имени связанного параметра.

Словарь оценивается в время создания класса, поэтому не может быть изменен во время выполнения; он должен присутствовать в классе при первом объявлении класса.

Обратите внимание, что для диалектов, которые имеют дополнительные правила связанных параметров, например, дополнительные ограничения на ведущие символы, метод SQLCompiler.bindparam_string() может потребовать дополнения. Пример этого см. в компиляторе cx_Oracle.

Добавлено в версии 2.0.0rc1.

attribute sqlalchemy.sql.compiler.SQLCompiler.binds: Dict[str, BindParameter[Any]]

словарь ключей параметров привязки к экземплярам BindParameter.

attribute sqlalchemy.sql.compiler.SQLCompiler.bindtemplate: str

шаблон для отображения связанных параметров на основе paramstyle.

attribute sqlalchemy.sql.compiler.SQLCompiler.compilation_bindtemplate: str

шаблон, используемый компилятором для отображения параметров перед применением позиционного парамстиля

method sqlalchemy.sql.compiler.SQLCompiler.construct_expanded_state(params: Optional[_CoreSingleExecuteParams] = None, escape_names: bool = True) ExpandedState

Возвращает новый ExpandedState для заданного набора параметров.

Для запросов, использующих «расширяющие» или другие поздние параметры, этот метод предоставляет как окончательно сформированную строку SQL, так и параметры, которые будут использоваться для определенного набора параметров.

Добавлено в версии 2.0.0rc1.

method sqlalchemy.sql.compiler.SQLCompiler.construct_params(params: Optional[_CoreSingleExecuteParams] = None, extracted_parameters: Optional[Sequence[BindParameter[Any]]] = None, escape_names: bool = True, _group_number: Optional[int] = None, _check: bool = True, _no_postcompile: bool = False) _MutableCoreSingleExecuteParams

возвращает словарь ключей и значений параметров привязки

attribute sqlalchemy.sql.compiler.SQLCompiler.current_executable

Возвращает текущий «исполняемый файл», который компилируется.

В настоящее время это объект Select, Insert, Update, Delete, CompoundSelect, который компилируется. Конкретно он назначен списку элементов self.stack.

Когда компилируется утверждение, подобное приведенному выше, оно обычно также присваивается атрибуту .statement объекта Compiler. Однако все конструкции SQL в конечном счете являются вложенными, и этот атрибут никогда не должен использоваться методом visit_, поскольку не гарантируется, что он присвоен и не гарантируется, что он соответствует текущему компилируемому утверждению.

Добавлено в версии 1.3.21: Для совместимости с предыдущими версиями используйте следующий рецепт:

statement = getattr(self, "current_executable", False)
if statement is False:
    statement = self.stack[-1]["selectable"]

Для версий 1.4 и выше убедитесь, что используется только .current_executable; формат «self.stack» может измениться.

method sqlalchemy.sql.compiler.SQLCompiler.default_from()

Вызывается, когда оператор SELECT не содержит от и не нужно добавлять предложение FROM.

Дает Oracle возможность добавить FROM DUAL к выводу строки.

method sqlalchemy.sql.compiler.SQLCompiler.delete_extra_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

Предоставьте хук для переопределения генерации предложения DELETE..FROM.

Это может быть использовано, например, для реализации DELETE..USING.

MySQL и MSSQL переопределяют это.

attribute sqlalchemy.sql.compiler.SQLCompiler.effective_returning

Эффективные «возвращаемые» столбцы для INSERT, UPDATE или DELETE.

Это либо так называемые «неявные возвращающиеся» колонки, которые вычисляются компилятором на лету, либо те, которые присутствуют на основе того, что присутствует в self.statement._returning (расширенные на отдельные колонки с помощью атрибута ._all_selected_columns), т.е. те, которые заданы явно с помощью метода UpdateBase.returning().

Добавлено в версии 2.0.

attribute sqlalchemy.sql.compiler.SQLCompiler.escaped_bind_names: util.immutabledict[str, str] = {}

Позднее экранирование имен связанных параметров, которые должны быть преобразованы к оригинальному имени при поиске в словаре параметров.

method sqlalchemy.sql.compiler.SQLCompiler.get_select_precolumns(select, **kw)

Вызывается при построении оператора SELECT, позиция находится непосредственно перед списком столбцов.

method sqlalchemy.sql.compiler.SQLCompiler.group_by_clause(select, **kw)

позволяют диалектам настраивать способ отображения GROUP BY.

attribute sqlalchemy.sql.compiler.SQLCompiler.has_out_parameters = False

если True, то существуют объекты bindparam(), у которых установлен флаг isoutparam.

attribute sqlalchemy.sql.compiler.SQLCompiler.implicit_returning: Optional[Sequence[ColumnElement[Any]]] = None

список «неявных» возвращаемых столбцов для оператора INSERT или UPDATE верхнего уровня, используемый для получения новых значений столбцов.

Добавлено в версии 2.0: implicit_returning заменяет предыдущую коллекцию returning, которая не была обобщенной коллекцией RETURNING и вместо этого была специфична для функции «неявного возврата».

attribute sqlalchemy.sql.compiler.SQLCompiler.insert_prefetch: Sequence[Column[Any]] = ()

список столбцов, для которых значения по умолчанию должны быть оценены до того, как произойдет INSERT

attribute sqlalchemy.sql.compiler.SQLCompiler.insert_single_values_expr

Когда INSERT составляется с одним набором параметров внутри выражения VALUES, строка присваивается здесь, где она может быть использована для схем пакетной вставки, чтобы переписать выражение VALUES.

Добавлено в версии 1.3.8.

Изменено в версии 2.0: Эта коллекция больше не используется встроенными диалектами SQLAlchemy, в пользу внутренней коллекции _insertmanyvalues, которая используется только SQLCompiler.

attribute sqlalchemy.sql.compiler.SQLCompiler.isupdate: bool = False

параметры по умолчанию на уровне класса, которые могут быть установлены на уровне экземпляра, чтобы определить, представляет ли данный компилированный экземпляр INSERT/UPDATE/DELETE

attribute sqlalchemy.sql.compiler.SQLCompiler.literal_execute_params: FrozenSet[BindParameter[Any]] = frozenset({})

объекты bindparameter, которые отображаются как буквальные значения во время выполнения оператора.

method sqlalchemy.sql.compiler.SQLCompiler.order_by_clause(select, **kw)

позволяют диалектам настраивать способ отображения ORDER BY.

attribute sqlalchemy.sql.compiler.SQLCompiler.params

Возвращает словарь bind param, встроенный в этот скомпилированный объект, для тех значений, которые присутствуют.

См.также

Как отобразить SQL-выражения в виде строк, возможно, с вставкой связанных параметров? - включает пример использования для отладки примеров использования.

attribute sqlalchemy.sql.compiler.SQLCompiler.positiontup: Optional[List[str]] = None

для скомпилированной конструкции, использующей позиционный paramstyle, будет последовательность строк, указывающих имена связанных параметров по порядку.

Он используется для отображения связанных параметров в правильном порядке и используется вместе со словарем Compiled.params для отображения параметров.

Эта последовательность всегда содержит имя параметров без расшифровки.

См.также

Как отобразить SQL-выражения в виде строк, возможно, с вставкой связанных параметров? - включает пример использования для отладки примеров использования.

attribute sqlalchemy.sql.compiler.SQLCompiler.post_compile_params: FrozenSet[BindParameter[Any]] = frozenset({})

объекты bindparameter, которые отображаются в качестве держателей связанных параметров во время выполнения оператора.

attribute sqlalchemy.sql.compiler.SQLCompiler.postfetch: Optional[List[Column[Any]]]

список столбцов, которые можно пост-фетчить после INSERT или UPDATE для получения обновленных сервером значений

attribute sqlalchemy.sql.compiler.SQLCompiler.postfetch_lastrowid = False

если True, и это вставка, используйте cursor.lastrowid для заполнения result.inserted_primary_key.

method sqlalchemy.sql.compiler.SQLCompiler.render_literal_value(value, type_)

Вернуть значение параметра связывания в виде литерала в кавычках.

Используется для секций оператора, которые не принимают параметры привязки на целевом драйвере/базе данных.

Это должно быть реализовано подклассами, использующими сервисы цитирования DBAPI.

attribute sqlalchemy.sql.compiler.SQLCompiler.render_table_with_column_in_update_from: bool = False

имеет значение True для всего класса, чтобы указать, что предложение SET в операторе UPDATE для нескольких таблиц должно определять столбцы с именем таблицы (т.е. только для MySQL).

attribute sqlalchemy.sql.compiler.SQLCompiler.returning

обратная совместимость; возвращает коллекцию effective_returning.

attribute sqlalchemy.sql.compiler.SQLCompiler.returning_precedes_values: bool = False

имеет значение True для всего класса, чтобы генерировать предложения RETURNING перед предложениями VALUES или WHERE (т.е. MSSQL).

attribute sqlalchemy.sql.compiler.SQLCompiler.sql_compiler
attribute sqlalchemy.sql.compiler.SQLCompiler.stack: List[_CompilerStackEntry]

Основные операторы, такие как SELECT, INSERT, UPDATE, DELETE, отслеживаются в этом стеке с помощью формата записи.

attribute sqlalchemy.sql.compiler.SQLCompiler.translate_select_structure: Any = None

если не None, должен быть вызываемый объект, который принимает (select_stmt, **kw) и возвращает объект select. это используется для структурных изменений, в основном для приспособления к схемам LIMIT/OFFSET.

method sqlalchemy.sql.compiler.SQLCompiler.update_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

Предоставьте хук для переопределения генерации предложения UPDATE..FROM.

MySQL и MSSQL переопределяют это.

method sqlalchemy.sql.compiler.SQLCompiler.update_limit_clause(update_stmt)

Предоставьте крючок для MySQL, чтобы добавить LIMIT к UPDATE

attribute sqlalchemy.sql.compiler.SQLCompiler.update_prefetch: Sequence[Column[Any]] = ()

список столбцов, для которых значения по умолчанию onupdate должны быть оценены перед выполнением UPDATE

method sqlalchemy.sql.compiler.SQLCompiler.update_tables_clause(update_stmt, from_table, extra_froms, **kw)

Предоставьте крючок для переопределения пункта initial table в операторе UPDATE.

MySQL переопределяет это.

class sqlalchemy.sql.compiler.StrSQLCompiler

Подкласс SQLCompiler, позволяющий преобразовать в строковое значение небольшой набор нестандартных функций SQL.

StrSQLCompiler вызывается всякий раз, когда элемент выражения Core строится напрямую, без обращения к методу ClauseElement.compile(). Он может отображать ограниченный набор нестандартных конструкций SQL для помощи в базовой структуризации, однако для более существенных пользовательских или специфических для диалекта конструкций SQL необходимо использовать непосредственно ClauseElement.compile().

method sqlalchemy.sql.compiler.StrSQLCompiler.delete_extra_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

Предоставьте хук для переопределения генерации предложения DELETE..FROM.

Это может быть использовано, например, для реализации DELETE..USING.

MySQL и MSSQL переопределяют это.

method sqlalchemy.sql.compiler.StrSQLCompiler.update_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

Предоставьте хук для переопределения генерации предложения UPDATE..FROM.

MySQL и MSSQL переопределяют это.

class sqlalchemy.engine.AdaptedConnection

Интерфейс адаптированного объекта соединения для поддержки протокола DBAPI.

Используется диалектами asyncio для обеспечения фасада pep-249 в стиле sync поверх API соединения/курсора asyncio, предоставляемого драйвером.

Добавлено в версии 1.4.24.

attribute sqlalchemy.engine.AdaptedConnection.driver_connection

Объект соединения, возвращаемый драйвером после подключения.

method sqlalchemy.engine.AdaptedConnection.run_async(fn: Callable[[Any], Awaitable[_T]]) _T

Запуск awaitable, возвращаемого заданной функцией, которой передается необработанное соединение драйвера asyncio.

Используется для вызова только ожидающих методов на соединении драйвера в контексте «синхронного» метода, например, обработчика событий пула соединений.

Например:

engine = create_async_engine(...)

@event.listens_for(engine.sync_engine, "connect")
def register_custom_types(dbapi_connection, ...):
    dbapi_connection.run_async(
        lambda connection: connection.set_type_codec(
            'MyCustomType', encoder, decoder, ...
        )
    )

Добавлено в версии 1.4.30.

Вернуться на верх