DDL Internals¶
These are some of the constructs used to generate migration
instructions. The APIs here build off of the sqlalchemy.schema.DDLElement
and Custom SQL Constructs and Compilation Extension systems.
For programmatic usage of Alembic’s migration directives, the easiest route is to use the higher level functions given by Operation Directives.
-
class
alembic.ddl.base.
AddColumn
(name, column, schema=None)¶
-
class
alembic.ddl.base.
AlterColumn
(name, column_name, schema=None, existing_type=None, existing_nullable=None, existing_server_default=None)¶
-
class
alembic.ddl.base.
AlterTable
(table_name, schema=None)¶ Represent an ALTER TABLE statement.
Only the string name and optional schema name of the table is required, not a full Table object.
-
class
alembic.ddl.base.
ColumnDefault
(name, column_name, default, **kw)¶
-
class
alembic.ddl.base.
ColumnName
(name, column_name, newname, **kw)¶
-
class
alembic.ddl.base.
ColumnNullable
(name, column_name, nullable, **kw)¶
-
class
alembic.ddl.base.
ColumnType
(name, column_name, type_, **kw)¶
-
class
alembic.ddl.base.
DropColumn
(name, column, schema=None)¶
-
class
alembic.ddl.base.
RenameTable
(old_table_name, new_table_name, schema=None)¶
-
alembic.ddl.base.
add_column
(compiler, column, **kw)¶
-
alembic.ddl.base.
alter_column
(compiler, name)¶
-
alembic.ddl.base.
alter_table
(compiler, name, schema)¶
-
alembic.ddl.base.
drop_column
(compiler, name)¶
-
alembic.ddl.base.
format_column_name
(compiler, name)¶
-
alembic.ddl.base.
format_server_default
(compiler, default)¶
-
alembic.ddl.base.
format_table_name
(compiler, name, schema)¶
-
alembic.ddl.base.
format_type
(compiler, type_)¶
-
alembic.ddl.base.
quote_dotted
(name, quote)¶ quote the elements of a dotted name
-
alembic.ddl.base.
visit_add_column
(element, compiler, **kw)¶
-
alembic.ddl.base.
visit_column_default
(element, compiler, **kw)¶
-
alembic.ddl.base.
visit_column_name
(element, compiler, **kw)¶
-
alembic.ddl.base.
visit_column_nullable
(element, compiler, **kw)¶
-
alembic.ddl.base.
visit_column_type
(element, compiler, **kw)¶
-
alembic.ddl.base.
visit_drop_column
(element, compiler, **kw)¶
-
alembic.ddl.base.
visit_rename_table
(element, compiler, **kw)¶
-
class
alembic.ddl.impl.
DefaultImpl
(dialect, connection, as_sql, transactional_ddl, output_buffer, context_opts)¶ Provide the entrypoint for major migration operations, including database-specific behavioral variances.
While individual SQL/DDL constructs already provide for database-specific implementations, variances here allow for entirely different sequences of operations to take place for a particular migration, such as SQL Server’s special ‘IDENTITY INSERT’ step for bulk inserts.
-
add_column
(table_name, column, schema=None)¶
-
add_constraint
(const)¶
-
alter_column
(table_name, column_name, nullable=None, server_default=False, name=None, type_=None, schema=None, autoincrement=None, existing_type=None, existing_server_default=None, existing_nullable=None, existing_autoincrement=None)¶
-
autogen_column_reflect
(inspector, table, column_info)¶ A hook that is attached to the ‘column_reflect’ event for when a Table is reflected from the database during the autogenerate process.
Dialects can elect to modify the information gathered here.
-
bind
¶
-
bulk_insert
(table, rows, multiinsert=True)¶
-
command_terminator
= ';'¶
-
compare_server_default
(inspector_column, metadata_column, rendered_metadata_default, rendered_inspector_default)¶
-
compare_type
(inspector_column, metadata_column)¶
-
correct_for_autogen_constraints
(conn_uniques, conn_indexes, metadata_unique_constraints, metadata_indexes)¶
-
correct_for_autogen_foreignkeys
(conn_fks, metadata_fks)¶
-
create_index
(index)¶
-
create_table
(table)¶
-
drop_column
(table_name, column, schema=None, **kw)¶
-
drop_constraint
(const)¶
-
drop_index
(index)¶
-
drop_table
(table)¶
-
emit_begin
()¶ Emit the string
BEGIN
, or the backend-specific equivalent, on the current connection context.This is used in offline mode and typically via
EnvironmentContext.begin_transaction()
.
-
emit_commit
()¶ Emit the string
COMMIT
, or the backend-specific equivalent, on the current connection context.This is used in offline mode and typically via
EnvironmentContext.begin_transaction()
.
-
execute
(sql, execution_options=None)¶
-
classmethod
get_by_dialect
(dialect)¶
-
prep_table_for_batch
(table)¶ perform any operations needed on a table before a new one is created to replace it in batch mode.
the PG dialect uses this to drop constraints on the table before the new one uses those same names.
-
rename_table
(old_table_name, new_table_name, schema=None)¶
-
requires_recreate_in_batch
(batch_op)¶ Return True if the given
BatchOperationsImpl
would need the table to be recreated and copied in order to proceed.Normally, only returns True on SQLite when operations other than add_column are present.
-
start_migrations
()¶ A hook called when
EnvironmentContext.run_migrations()
is called.Implementations can set up per-migration-run state here.
-
static_output
(text)¶
-
transactional_ddl
= False¶
-
-
class
alembic.ddl.impl.
ImplMeta
(classname, bases, dict_)¶
MySQL¶
-
class
alembic.ddl.mysql.
MySQLAlterDefault
(name, column_name, default, schema=None)¶ Bases:
alembic.ddl.base.AlterColumn
-
class
alembic.ddl.mysql.
MySQLChangeColumn
(name, column_name, schema=None, newname=None, type_=None, nullable=None, default=False, autoincrement=None)¶ Bases:
alembic.ddl.base.AlterColumn
-
class
alembic.ddl.mysql.
MySQLImpl
(dialect, connection, as_sql, transactional_ddl, output_buffer, context_opts)¶ Bases:
alembic.ddl.impl.DefaultImpl
-
alter_column
(table_name, column_name, nullable=None, server_default=False, name=None, type_=None, schema=None, existing_type=None, existing_server_default=None, existing_nullable=None, autoincrement=None, existing_autoincrement=None, **kw)¶
-
compare_server_default
(inspector_column, metadata_column, rendered_metadata_default, rendered_inspector_default)¶
-
correct_for_autogen_constraints
(conn_unique_constraints, conn_indexes, metadata_unique_constraints, metadata_indexes)¶
-
correct_for_autogen_foreignkeys
(conn_fks, metadata_fks)¶
-
transactional_ddl
= False¶
-
-
class
alembic.ddl.mysql.
MySQLModifyColumn
(name, column_name, schema=None, newname=None, type_=None, nullable=None, default=False, autoincrement=None)¶
MS-SQL¶
-
class
alembic.ddl.mssql.
MSSQLImpl
(*arg, **kw)¶ Bases:
alembic.ddl.impl.DefaultImpl
-
alter_column
(table_name, column_name, nullable=None, server_default=False, name=None, type_=None, schema=None, existing_type=None, existing_server_default=None, existing_nullable=None, **kw)¶
-
batch_separator
= 'GO'¶
-
bulk_insert
(table, rows, **kw)¶
-
drop_column
(table_name, column, **kw)¶
-
emit_begin
()¶
-
emit_commit
()¶
-
transactional_ddl
= True¶
-
-
alembic.ddl.mssql.
mssql_add_column
(compiler, column, **kw)¶
-
alembic.ddl.mssql.
visit_add_column
(element, compiler, **kw)¶
-
alembic.ddl.mssql.
visit_column_default
(element, compiler, **kw)¶
-
alembic.ddl.mssql.
visit_column_nullable
(element, compiler, **kw)¶
-
alembic.ddl.mssql.
visit_column_type
(element, compiler, **kw)¶
-
alembic.ddl.mssql.
visit_rename_column
(element, compiler, **kw)¶
-
alembic.ddl.mssql.
visit_rename_table
(element, compiler, **kw)¶
Postgresql¶
-
class
alembic.ddl.postgresql.
PostgresqlImpl
(dialect, connection, as_sql, transactional_ddl, output_buffer, context_opts)¶ Bases:
alembic.ddl.impl.DefaultImpl
-
autogen_column_reflect
(inspector, table, column_info)¶
-
compare_server_default
(inspector_column, metadata_column, rendered_metadata_default, rendered_inspector_default)¶
-
correct_for_autogen_constraints
(conn_unique_constraints, conn_indexes, metadata_unique_constraints, metadata_indexes)¶
-
prep_table_for_batch
(table)¶
-
transactional_ddl
= True¶
-
-
alembic.ddl.postgresql.
visit_rename_table
(element, compiler, **kw)¶
SQLite¶
-
class
alembic.ddl.sqlite.
SQLiteImpl
(dialect, connection, as_sql, transactional_ddl, output_buffer, context_opts)¶ Bases:
alembic.ddl.impl.DefaultImpl
-
add_constraint
(const)¶
-
compare_server_default
(inspector_column, metadata_column, rendered_metadata_default, rendered_inspector_default)¶
-
correct_for_autogen_constraints
(conn_unique_constraints, conn_indexes, metadata_unique_constraints, metadata_indexes)¶
-
drop_constraint
(const)¶
-
requires_recreate_in_batch
(batch_op)¶ Return True if the given
BatchOperationsImpl
would need the table to be recreated and copied in order to proceed.Normally, only returns True on SQLite when operations other than add_column are present.
-
transactional_ddl
= False¶ SQLite supports transactional DDL, but pysqlite does not: see: http://bugs.python.org/issue10740
-