class documentation

This class and its subclasses are responsible for emitting schema-changing statements to the databases - model creation/removal/alteration, field renaming, index fiddling, and so on.

Method __enter__ Undocumented
Method __exit__ Undocumented
Method __init__ Undocumented
Method add_constraint Add a constraint to a model.
Method add_field Create a field on a model. Usually involves adding a column, but may involve adding a table instead (for M2M fields).
Method add_index Add an index on a model.
Method alter_db_table Rename the table a model points to.
Method alter_db_tablespace Move a model's table between tablespaces.
Method alter_field Allow a field's type, uniqueness, nullability, default, column, constraints, etc. to be modified. `old_field` is required to compute the necessary changes. If `strict` is True, raise errors if the old column does not match `old_field` precisely.
Method alter_index_together Deal with a model changing its index_together. The input index_togethers must be doubly-nested, not the single-nested ["foo", "bar"] format.
Method alter_unique_together Deal with a model changing its unique_together. The input unique_togethers must be doubly-nested, not the single-nested ["foo", "bar"] format.
Method column_sql Return the column definition for a field. The field must already have had set_attributes_from_name() called.
Method create_model Create a table and any accompanying indexes or unique constraints for the given `model`.
Method delete_model Delete a model from the database.
Method effective_default Return a field's effective database default value.
Method execute Execute the given SQL statement, with optional parameters.
Method prepare_default Only used for backends which have requires_literal_defaults feature
Method quote_name Undocumented
Method quote_value Return a quoted version of the value so it's safe to use in an SQL string. This is not safe against injection from user code; it is intended only for use in making SQL scripts or preparing default values for particularly tricky backends (defaults are not user-defined, though, so this is safe).
Method remove_constraint Remove a constraint from a model.
Method remove_field Remove a field from a model. Usually involves deleting a column, but for M2Ms may involve deleting a table.
Method remove_index Remove an index from a model.
Method remove_procedure Undocumented
Method rename_index Undocumented
Method skip_default Some backends don't accept default values for certain columns types (i.e. MySQL longtext and longblob).
Method skip_default_on_alter Some backends don't accept default values for certain columns types (i.e. MySQL longtext and longblob) in the ALTER COLUMN statement.
Method table_sql Take a model and return its table definition.
Class Variable sql_alter_column Undocumented
Class Variable sql_alter_column_collate Undocumented
Class Variable sql_alter_column_default Undocumented
Class Variable sql_alter_column_no_default Undocumented
Class Variable sql_alter_column_not_null Undocumented
Class Variable sql_alter_column_null Undocumented
Class Variable sql_alter_column_type Undocumented
Class Variable sql_check_constraint Undocumented
Class Variable sql_constraint Undocumented
Class Variable sql_create_check Undocumented
Class Variable sql_create_column Undocumented
Class Variable sql_create_column_inline_fk Undocumented
Class Variable sql_create_fk Undocumented
Class Variable sql_create_index Undocumented
Class Variable sql_create_inline_fk Undocumented
Class Variable sql_create_pk Undocumented
Class Variable sql_create_table Undocumented
Class Variable sql_create_unique Undocumented
Class Variable sql_create_unique_index Undocumented
Class Variable sql_delete_column Undocumented
Class Variable sql_delete_constraint Undocumented
Class Variable sql_delete_index Undocumented
Class Variable sql_delete_procedure Undocumented
Class Variable sql_delete_table Undocumented
Class Variable sql_rename_column Undocumented
Class Variable sql_rename_index Undocumented
Class Variable sql_rename_table Undocumented
Class Variable sql_retablespace_table Undocumented
Class Variable sql_unique_constraint Undocumented
Class Variable sql_update_with_default Undocumented
Instance Variable atomic Undocumented
Instance Variable atomic_migration Undocumented
Instance Variable collect_sql Undocumented
Instance Variable collected_sql Undocumented
Instance Variable connection Undocumented
Instance Variable deferred_sql Undocumented
Static Method _effective_default Undocumented
Method _alter_column_collation_sql Undocumented
Method _alter_column_default_sql Hook to specialize column default alteration.
Method _alter_column_null_sql Hook to specialize column null alteration.
Method _alter_column_type_sql Hook to specialize column type alteration for different backends, for cases when a creation type is different to an alteration type (e.g. SERIAL in PostgreSQL, PostGIS fields).
Method _alter_field Perform a "physical" (non-ManyToMany) field update.
Method _alter_many_to_many Alter M2Ms to repoint their to= endpoints.
Method _check_sql Undocumented
Method _collate_sql Undocumented
Method _column_default_sql Return the SQL to use in a DEFAULT clause. The resulting string should contain a '%s' placeholder for a default value.
Method _constraint_names Return all constraint names matching the columns and conditions.
Method _create_check_sql Undocumented
Method _create_fk_sql Undocumented
Method _create_index_name Generate a unique name for an index/unique constraint.
Method _create_index_sql Return the SQL statement to create the index for one or several fields or expressions. `sql` can be specified if the syntax differs from the standard (GIS indexes, ...).
Method _create_primary_key_sql Undocumented
Method _create_unique_sql Undocumented
Method _deferrable_constraint_sql Undocumented
Method _delete_check_sql Undocumented
Method _delete_composed_index Undocumented
Method _delete_constraint_sql Undocumented
Method _delete_fk_sql Undocumented
Method _delete_index_sql Undocumented
Method _delete_primary_key Undocumented
Method _delete_primary_key_sql Undocumented
Method _delete_unique_sql Undocumented
Method _field_became_primary_key Undocumented
Method _field_indexes_sql Return a list of all index SQL statements for the specified field.
Method _field_should_be_altered Undocumented
Method _field_should_be_indexed Undocumented
Method _fk_constraint_name Undocumented
Method _get_index_tablespace_sql Undocumented
Method _index_columns Undocumented
Method _index_condition_sql Undocumented
Method _index_include_sql Undocumented
Method _iter_column_sql Undocumented
Method _model_indexes_sql Return a list of all index SQL statements (field indexes, index_together, Meta.indexes) for the specified model.
Method _rename_field_sql Undocumented
Method _rename_index_sql Undocumented
Method _unique_constraint_name Undocumented
Method _unique_should_be_added Undocumented
Method _unique_sql Undocumented
def __exit__(self, exc_type, exc_value, traceback): (source)
def add_constraint(self, model, constraint): (source)

Add a constraint to a model.

def add_field(self, model, field): (source)

Create a field on a model. Usually involves adding a column, but may involve adding a table instead (for M2M fields).

def add_index(self, model, index): (source)

Add an index on a model.

def alter_db_table(self, model, old_db_table, new_db_table): (source)

Rename the table a model points to.

def alter_db_tablespace(self, model, old_db_tablespace, new_db_tablespace): (source)

Move a model's table between tablespaces.

def alter_field(self, model, old_field, new_field, strict=False): (source)

Allow a field's type, uniqueness, nullability, default, column, constraints, etc. to be modified. `old_field` is required to compute the necessary changes. If `strict` is True, raise errors if the old column does not match `old_field` precisely.

def alter_index_together(self, model, old_index_together, new_index_together): (source)

Deal with a model changing its index_together. The input index_togethers must be doubly-nested, not the single-nested ["foo", "bar"] format.

def alter_unique_together(self, model, old_unique_together, new_unique_together): (source)

Deal with a model changing its unique_together. The input unique_togethers must be doubly-nested, not the single-nested ["foo", "bar"] format.

def column_sql(self, model, field, include_default=False): (source)
def effective_default(self, field): (source)

Return a field's effective database default value.

def execute(self, sql, params=()): (source)

Execute the given SQL statement, with optional parameters.

def prepare_default(self, value): (source)

Only used for backends which have requires_literal_defaults feature

def quote_name(self, name): (source)

Undocumented

def quote_value(self, value): (source)

Return a quoted version of the value so it's safe to use in an SQL string. This is not safe against injection from user code; it is intended only for use in making SQL scripts or preparing default values for particularly tricky backends (defaults are not user-defined, though, so this is safe).

def remove_constraint(self, model, constraint): (source)

Remove a constraint from a model.

def remove_field(self, model, field): (source)

Remove a field from a model. Usually involves deleting a column, but for M2Ms may involve deleting a table.

def remove_index(self, model, index): (source)

Remove an index from a model.

def remove_procedure(self, procedure_name, param_types=()): (source)

Undocumented

def rename_index(self, model, old_index, new_index): (source)

Undocumented

def skip_default(self, field): (source)

Some backends don't accept default values for certain columns types (i.e. MySQL longtext and longblob).

def skip_default_on_alter(self, field): (source)

Some backends don't accept default values for certain columns types (i.e. MySQL longtext and longblob) in the ALTER COLUMN statement.

def table_sql(self, model): (source)

Take a model and return its table definition.

sql_alter_column: str = (source)

Undocumented

sql_alter_column_default: str = (source)
sql_alter_column_no_default: str = (source)
sql_check_constraint: str = (source)

Undocumented

sql_constraint: str = (source)

Undocumented

sql_create_check: str = (source)

Undocumented

sql_create_inline_fk = (source)
sql_create_table: str = (source)

Undocumented

sql_create_unique_index: str = (source)

Undocumented

sql_delete_constraint: str = (source)

Undocumented

sql_retablespace_table: str = (source)

Undocumented

sql_unique_constraint: str = (source)

Undocumented

sql_update_with_default: str = (source)

Undocumented

atomic_migration = (source)

Undocumented

collect_sql = (source)

Undocumented

collected_sql: list = (source)

Undocumented

connection = (source)

Undocumented

@staticmethod
def _effective_default(field): (source)

Undocumented

def _alter_column_collation_sql(self, model, new_field, new_type, new_collation): (source)
def _alter_column_default_sql(self, model, old_field, new_field, drop=False): (source)

Hook to specialize column default alteration. Return a (sql, params) fragment to add or drop (depending on the drop argument) a default to new_field's column.

def _alter_column_null_sql(self, model, old_field, new_field): (source)

Hook to specialize column null alteration. Return a (sql, params) fragment to set a column to null or non-null as required by new_field, or None if no changes are required.

def _alter_column_type_sql(self, model, old_field, new_field, new_type): (source)

Hook to specialize column type alteration for different backends, for cases when a creation type is different to an alteration type (e.g. SERIAL in PostgreSQL, PostGIS fields). Return a two-tuple of: an SQL fragment of (sql, params) to insert into an ALTER TABLE statement and a list of extra (sql, params) tuples to run once the field is altered.

def _alter_field(self, model, old_field, new_field, old_type, new_type, old_db_params, new_db_params, strict=False): (source)
def _alter_many_to_many(self, model, old_field, new_field, strict): (source)

Alter M2Ms to repoint their to= endpoints.

def _check_sql(self, name, check): (source)

Undocumented

def _collate_sql(self, collation): (source)
def _column_default_sql(self, field): (source)

Return the SQL to use in a DEFAULT clause. The resulting string should contain a '%s' placeholder for a default value.

def _constraint_names(self, model, column_names=None, unique=None, primary_key=None, index=None, foreign_key=None, check=None, type_=None, exclude=None): (source)

Return all constraint names matching the columns and conditions.

def _create_check_sql(self, model, name, check): (source)

Undocumented

def _create_fk_sql(self, model, field, suffix): (source)

Undocumented

def _create_index_name(self, table_name, column_names, suffix=''): (source)

Generate a unique name for an index/unique constraint. The name is divided into 3 parts: the table name, the column names, and a unique digest and suffix.

def _create_index_sql(self, model, *, fields=None, name=None, suffix='', using='', db_tablespace=None, col_suffixes=(), sql=None, opclasses=(), condition=None, include=None, expressions=None): (source)

Return the SQL statement to create the index for one or several fields or expressions. `sql` can be specified if the syntax differs from the standard (GIS indexes, ...).

def _create_primary_key_sql(self, model, field): (source)

Undocumented

def _create_unique_sql(self, model, fields, name=None, condition=None, deferrable=None, include=None, opclasses=None, expressions=None): (source)

Undocumented

def _deferrable_constraint_sql(self, deferrable): (source)

Undocumented

def _delete_check_sql(self, model, name): (source)

Undocumented

def _delete_composed_index(self, model, fields, constraint_kwargs, sql): (source)
def _delete_constraint_sql(self, template, model, name): (source)

Undocumented

def _delete_fk_sql(self, model, name): (source)

Undocumented

def _delete_index_sql(self, model, name, sql=None): (source)
def _delete_primary_key(self, model, strict=False): (source)

Undocumented

def _delete_primary_key_sql(self, model, name): (source)

Undocumented

def _delete_unique_sql(self, model, name, condition=None, deferrable=None, include=None, opclasses=None, expressions=None): (source)

Undocumented

def _field_became_primary_key(self, old_field, new_field): (source)

Undocumented

def _field_indexes_sql(self, model, field): (source)

Return a list of all index SQL statements for the specified field.

def _field_should_be_altered(self, old_field, new_field): (source)

Undocumented

def _fk_constraint_name(self, model, field, suffix): (source)

Undocumented

def _get_index_tablespace_sql(self, model, fields, db_tablespace=None): (source)

Undocumented

def _index_columns(self, table, columns, col_suffixes, opclasses): (source)
def _index_condition_sql(self, condition): (source)

Undocumented

def _index_include_sql(self, model, columns): (source)

Undocumented

def _iter_column_sql(self, column_db_type, params, model, field, field_db_params, include_default): (source)

Undocumented

def _model_indexes_sql(self, model): (source)

Return a list of all index SQL statements (field indexes, index_together, Meta.indexes) for the specified model.

def _rename_field_sql(self, table, old_field, new_field, new_type): (source)
def _rename_index_sql(self, model, old_name, new_name): (source)

Undocumented

def _unique_constraint_name(self, table, columns, quote=True): (source)

Undocumented

def _unique_should_be_added(self, old_field, new_field): (source)

Undocumented

def _unique_sql(self, model, fields, name, condition=None, deferrable=None, include=None, opclasses=None, expressions=None): (source)

Undocumented