DDL Internals¶
These are some of the constructs used to generate migration
instructions. The APIs here build off of the sqlalchemy.schema.DDLElement
and sqlalchemy.ext.compiler_toplevel 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)¶
-
drop_constraint
(const)¶
-
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.
PostgresqlColumnType
(name, column_name, type_, **kw)¶ Bases:
alembic.ddl.base.AlterColumn
-
class
alembic.ddl.postgresql.
PostgresqlImpl
(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, autoincrement=None, existing_type=None, existing_server_default=None, existing_nullable=None, existing_autoincrement=None, **kw)¶
-
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_column_type
(element, compiler, **kw)¶
-
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
-