class documentation

class BaseDatabaseOperations:

Known subclasses: django.db.backends.dummy.base.DatabaseOperations, django.db.backends.mysql.operations.DatabaseOperations, django.db.backends.oracle.operations.DatabaseOperations, django.db.backends.postgresql.operations.DatabaseOperations, django.db.backends.sqlite3.operations.DatabaseOperations

View In Hierarchy

Encapsulate backend-specific differences, such as the way a backend performs ordering or calculates the ID of a recently-inserted row.
Constant CURRENT​_ROW Undocumented
Constant FOLLOWING Undocumented
Constant PRECEDING Undocumented
Constant UNBOUNDED​_FOLLOWING Undocumented
Constant UNBOUNDED​_PRECEDING Undocumented
Method __init__ Undocumented
Method ​_get​_limit​_offset​_params Undocumented
Method adapt​_datefield​_value Transform a date value to an object compatible with what is expected by the backend driver for date columns.
Method adapt​_datetimefield​_value Transform a datetime value to an object compatible with what is expected by the backend driver for datetime columns.
Method adapt​_decimalfield​_value Transform a decimal.Decimal value to an object compatible with what is expected by the backend driver for decimal (numeric) columns.
Method adapt​_ipaddressfield​_value Transform a string representation of an IP address into the expected type for the backend driver.
Method adapt​_timefield​_value Transform a time value to an object compatible with what is expected by the backend driver for time columns.
Method adapt​_unknown​_value Transform a value to something compatible with the backend driver.
Method autoinc​_sql Return any SQL needed to support auto-incrementing primary keys, or None if no SQL is necessary.
Method binary​_placeholder​_sql Some backends require special syntax to insert binary content (MySQL for example uses '_binary %s').
Method bulk​_batch​_size Return the maximum allowed batch size for the backend. The fields are the fields going to be inserted in the batch, the objs contains all the objects to be inserted.
Method cache​_key​_culling​_sql Return an SQL query that retrieves the first cache key greater than the n smallest.
Method check​_expression​_support Check that the backend supports the provided expression.
Method combine​_duration​_expression Undocumented
Method combine​_expression No summary
Method compiler Return the SQLCompiler class corresponding to the given name, in the namespace corresponding to the compiler_module attribute on this backend.
Method conditional​_expression​_supported​_in​_where​_clause Return True, if the conditional expression is supported in the WHERE clause.
Method convert​_durationfield​_value Undocumented
Method date​_extract​_sql Given a lookup_type of 'year', 'month', or 'day', return the SQL that extracts a value from the given date field field_name.
Method date​_trunc​_sql Given a lookup_type of 'year', 'month', or 'day', return the SQL that truncates the given date or datetime field field_name to a date object with only the given specificity.
Method datetime​_cast​_date​_sql Return the SQL to cast a datetime value to date value.
Method datetime​_cast​_time​_sql Return the SQL to cast a datetime value to time value.
Method datetime​_extract​_sql Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute', or 'second', return the SQL that extracts a value from the given datetime field field_name.
Method datetime​_trunc​_sql Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute', or 'second', return the SQL that truncates the given datetime field field_name to a datetime object with only the given specificity.
Method deferrable​_sql Return the SQL to make a constraint "initially deferred" during a CREATE TABLE statement.
Method distinct​_sql Return an SQL DISTINCT clause which removes duplicate rows from the result set. If any fields are given, only check the given fields for duplicates.
Method end​_transaction​_sql Return the SQL statement required to end a transaction.
Method execute​_sql​_flush Execute a list of SQL statements to flush the database.
Method explain​_query​_prefix Undocumented
Method fetch​_returned​_insert​_columns Given a cursor object that has just performed an INSERT...RETURNING statement into a table, return the newly created data.
Method field​_cast​_sql No summary
Method for​_update​_sql Return the FOR UPDATE SQL clause to lock rows for an update operation.
Method force​_no​_ordering Return a list used in the "ORDER BY" clause to force no ordering at all. Return an empty list to include nothing in the ordering.
Method get​_db​_converters Return a list of functions needed to convert field data.
Method ignore​_conflicts​_suffix​_sql Undocumented
Method insert​_statement Undocumented
Method integer​_field​_range Given an integer field internal type (e.g. 'PositiveIntegerField'), return a tuple of the (min_value, max_value) form representing the range of the column type bound to the field.
Method last​_executed​_query Return a string of the query last executed by the given cursor, with placeholders replaced with actual values.
Method last​_insert​_id Given a cursor object that has just performed an INSERT statement into a table that has an auto-incrementing ID, return the newly created ID.
Method limit​_offset​_sql Return LIMIT/OFFSET SQL clause.
Method lookup​_cast Return the string to use in a query when performing lookups ("contains", "like", etc.). It should contain a '%s' placeholder for the column being searched against.
Method max​_in​_list​_size Return the maximum number of items that can be passed in a single 'IN' list condition, or None if the backend does not impose a limit.
Method max​_name​_length Return the maximum length of table and column names, or None if there is no limit.
Method modify​_insert​_params Allow modification of insert parameters. Needed for Oracle Spatial backend due to #10888.
Method no​_limit​_value Return the value to use for the LIMIT when we are wanting "LIMIT infinity". Return None if the limit clause can be omitted in this case.
Method pk​_default​_value Return the value to use during an INSERT statement to specify that the field should use its default value.
Method prep​_for​_like​_query Prepare a value for use in a LIKE query.
Method prepare​_sql​_script Take an SQL script that may contain multiple lines and return a list of statements to feed to successive cursor.execute() calls.
Method process​_clob Return the value of a CLOB column, for backends that return a locator object that requires additional processing.
Method quote​_name Return a quoted version of the given table, index, or column name. Do not quote the given name if it's already been quoted.
Method regex​_lookup Return the string to use in a query when performing regular expression lookups (using "regex" or "iregex"). It should contain a '%s' placeholder for the column being searched against.
Method return​_insert​_columns For backends that support returning columns as part of an insert query, return the SQL and params to append to the INSERT query. The returned fragment should contain a format string to hold the appropriate column.
Method savepoint​_commit​_sql Return the SQL for committing the given savepoint.
Method savepoint​_create​_sql Return the SQL for starting a new savepoint. Only required if the "uses_savepoints" feature is True. The "sid" parameter is a string for the savepoint id.
Method savepoint​_rollback​_sql Return the SQL for rolling back the given savepoint.
Method sequence​_reset​_by​_name​_sql Return a list of the SQL statements required to reset sequences passed in sequences.
Method sequence​_reset​_sql Return a list of the SQL statements required to reset sequences for the given models.
Method set​_time​_zone​_sql Return the SQL that will set the connection's time zone.
Method sql​_flush Return a list of SQL statements required to remove all data from the given database tables (without actually removing the tables themselves).
Method start​_transaction​_sql Return the SQL statement required to start a transaction.
Method subtract​_temporals Undocumented
Method tablespace​_sql Return the SQL that will be used in a query to define the tablespace.
Method time​_extract​_sql Given a lookup_type of 'hour', 'minute', or 'second', return the SQL that extracts a value from the given time field field_name.
Method time​_trunc​_sql Given a lookup_type of 'hour', 'minute' or 'second', return the SQL that truncates the given time or datetime field field_name to a time object with only the given specificity.
Method unification​_cast​_sql Given a field instance, return the SQL that casts the result of a union to that type. The resulting string should contain a '%s' placeholder for the expression being cast.
Method validate​_autopk​_value Certain backends do not accept some values for "serial" fields (for example zero in MySQL). Raise a ValueError if the value is invalid, otherwise return the validated value.
Method window​_frame​_end Undocumented
Method window​_frame​_range​_start​_end Undocumented
Method window​_frame​_rows​_start​_end Return SQL for start and end points in an OVER clause window frame.
Method window​_frame​_start Undocumented
Method year​_lookup​_bounds​_for​_date​_field Return a two-elements list with the lower and upper bound to be used with a BETWEEN operator to query a DateField value using a year lookup.
Method year​_lookup​_bounds​_for​_datetime​_field Return a two-elements list with the lower and upper bound to be used with a BETWEEN operator to query a DateTimeField value using a year lookup.
Class Variable cast​_char​_field​_without​_max​_length Undocumented
Class Variable cast​_data​_types Undocumented
Class Variable compiler​_module Undocumented
Class Variable explain​_prefix Undocumented
Class Variable integer​_field​_ranges Undocumented
Class Variable set​_operators Undocumented
Instance Variable ​_cache Undocumented
Instance Variable connection Undocumented
CURRENT_ROW: str =

Undocumented

Value
'CURRENT ROW'
FOLLOWING: str =

Undocumented

Value
'FOLLOWING'
PRECEDING: str =

Undocumented

Value
'PRECEDING'
UNBOUNDED_FOLLOWING =

Undocumented

Value
'UNBOUNDED '+FOLLOWING
UNBOUNDED_PRECEDING =

Undocumented

Value
'UNBOUNDED '+PRECEDING
def __init__(self, connection):

Undocumented

def _get_limit_offset_params(self, low_mark, high_mark):

Undocumented

def adapt_datefield_value(self, value):
Transform a date value to an object compatible with what is expected by the backend driver for date columns.
def adapt_datetimefield_value(self, value):
def adapt_decimalfield_value(self, value, max_digits=None, decimal_places=None):
Transform a decimal.Decimal value to an object compatible with what is expected by the backend driver for decimal (numeric) columns.
def adapt_ipaddressfield_value(self, value):
Transform a string representation of an IP address into the expected type for the backend driver.
def adapt_timefield_value(self, value):
def adapt_unknown_value(self, value):

Transform a value to something compatible with the backend driver.

This method only depends on the type of the value. It's designed for cases where the target type isn't known, such as .raw() SQL queries. As a consequence it may not work perfectly in all circumstances.

def autoinc_sql(self, table, column):

Return any SQL needed to support auto-incrementing primary keys, or None if no SQL is necessary.

This SQL is executed when a table is created.

def binary_placeholder_sql(self, value):
Some backends require special syntax to insert binary content (MySQL for example uses '_binary %s').
def bulk_batch_size(self, fields, objs):
Return the maximum allowed batch size for the backend. The fields are the fields going to be inserted in the batch, the objs contains all the objects to be inserted.
def cache_key_culling_sql(self):

Return an SQL query that retrieves the first cache key greater than the n smallest.

This is used by the 'db' cache backend to determine where to start culling.

def check_expression_support(self, expression):

Check that the backend supports the provided expression.

This is used on specific backends to rule out known expressions that have problematic or nonexistent implementations. If the expression has a known problem, the backend should raise NotSupportedError.

def combine_duration_expression(self, connector, sub_expressions):
def combine_expression(self, connector, sub_expressions):
Combine a list of subexpressions into a single expression, using the provided connecting operator. This is required because operators can vary between backends (e.g., Oracle with %% and &) and between subexpression types (e.g., date expressions).
def compiler(self, compiler_name):
Return the SQLCompiler class corresponding to the given name, in the namespace corresponding to the compiler_module attribute on this backend.
def conditional_expression_supported_in_where_clause(self, expression):
Return True, if the conditional expression is supported in the WHERE clause.
def convert_durationfield_value(self, value, expression, connection):

Undocumented

def date_extract_sql(self, lookup_type, field_name):
def date_trunc_sql(self, lookup_type, field_name, tzname=None):

Given a lookup_type of 'year', 'month', or 'day', return the SQL that truncates the given date or datetime field field_name to a date object with only the given specificity.

If tzname is provided, the given value is truncated in a specific timezone.

def datetime_extract_sql(self, lookup_type, field_name, tzname):
Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute', or 'second', return the SQL that extracts a value from the given datetime field field_name.
def datetime_trunc_sql(self, lookup_type, field_name, tzname):
Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute', or 'second', return the SQL that truncates the given datetime field field_name to a datetime object with only the given specificity.
def deferrable_sql(self):
Return the SQL to make a constraint "initially deferred" during a CREATE TABLE statement.
def distinct_sql(self, fields, params):
Return an SQL DISTINCT clause which removes duplicate rows from the result set. If any fields are given, only check the given fields for duplicates.
def end_transaction_sql(self, success=True):
Return the SQL statement required to end a transaction.
def execute_sql_flush(self, sql_list):
Execute a list of SQL statements to flush the database.
def explain_query_prefix(self, format=None, **options):
def fetch_returned_insert_columns(self, cursor, returning_params):
Given a cursor object that has just performed an INSERT...RETURNING statement into a table, return the newly created data.
def field_cast_sql(self, db_type, internal_type):
Given a column type (e.g. 'BLOB', 'VARCHAR') and an internal type (e.g. 'GenericIPAddressField'), return the SQL to cast it before using it in a WHERE statement. The resulting string should contain a '%s' placeholder for the column being searched against.
def for_update_sql(self, nowait=False, skip_locked=False, of=(), no_key=False):
Return the FOR UPDATE SQL clause to lock rows for an update operation.
def force_no_ordering(self):
Return a list used in the "ORDER BY" clause to force no ordering at all. Return an empty list to include nothing in the ordering.
def get_db_converters(self, expression):

Return a list of functions needed to convert field data.

Some field types on some backends do not provide data in the correct format, this is the hook for converter functions.

def ignore_conflicts_suffix_sql(self, ignore_conflicts=None):
def insert_statement(self, ignore_conflicts=False):
def integer_field_range(self, internal_type):
Given an integer field internal type (e.g. 'PositiveIntegerField'), return a tuple of the (min_value, max_value) form representing the range of the column type bound to the field.
def last_executed_query(self, cursor, sql, params):

Return a string of the query last executed by the given cursor, with placeholders replaced with actual values.

sql is the raw query containing placeholders and params is the sequence of parameters. These are used by default, but this method exists for database backends to provide a better implementation according to their own quoting schemes.

def last_insert_id(self, cursor, table_name, pk_name):

Given a cursor object that has just performed an INSERT statement into a table that has an auto-incrementing ID, return the newly created ID.

pk_name is the name of the primary-key column.

def limit_offset_sql(self, low_mark, high_mark):
Return LIMIT/OFFSET SQL clause.
def lookup_cast(self, lookup_type, internal_type=None):
Return the string to use in a query when performing lookups ("contains", "like", etc.). It should contain a '%s' placeholder for the column being searched against.
def max_in_list_size(self):
Return the maximum number of items that can be passed in a single 'IN' list condition, or None if the backend does not impose a limit.
def max_name_length(self):
def modify_insert_params(self, placeholder, params):
Allow modification of insert parameters. Needed for Oracle Spatial backend due to #10888.
def no_limit_value(self):
Return the value to use for the LIMIT when we are wanting "LIMIT infinity". Return None if the limit clause can be omitted in this case.
def pk_default_value(self):
Return the value to use during an INSERT statement to specify that the field should use its default value.
def prep_for_like_query(self, x):
Prepare a value for use in a LIKE query.
def prepare_sql_script(self, sql):

Take an SQL script that may contain multiple lines and return a list of statements to feed to successive cursor.execute() calls.

Since few databases are able to process raw SQL scripts in a single cursor.execute() call and PEP 249 doesn't talk about this use case, the default implementation is conservative.

def process_clob(self, value):
Return the value of a CLOB column, for backends that return a locator object that requires additional processing.
def quote_name(self, name):
def regex_lookup(self, lookup_type):

Return the string to use in a query when performing regular expression lookups (using "regex" or "iregex"). It should contain a '%s' placeholder for the column being searched against.

If the feature is not supported (or part of it is not supported), raise NotImplementedError.

def return_insert_columns(self, fields):
For backends that support returning columns as part of an insert query, return the SQL and params to append to the INSERT query. The returned fragment should contain a format string to hold the appropriate column.
def savepoint_commit_sql(self, sid):
Return the SQL for committing the given savepoint.
def savepoint_create_sql(self, sid):
Return the SQL for starting a new savepoint. Only required if the "uses_savepoints" feature is True. The "sid" parameter is a string for the savepoint id.
def savepoint_rollback_sql(self, sid):
Return the SQL for rolling back the given savepoint.
def sequence_reset_by_name_sql(self, style, sequences):

Return a list of the SQL statements required to reset sequences passed in sequences.

The style argument is a Style object as returned by either color_style() or no_style() in django.core.management.color.

def sequence_reset_sql(self, style, model_list):

Return a list of the SQL statements required to reset sequences for the given models.

The style argument is a Style object as returned by either color_style() or no_style() in django.core.management.color.

def set_time_zone_sql(self):

Return the SQL that will set the connection's time zone.

Return '' if the backend doesn't support time zones.

def sql_flush(self, style, tables, *, reset_sequences=False, allow_cascade=False):

Return a list of SQL statements required to remove all data from the given database tables (without actually removing the tables themselves).

The style argument is a Style object as returned by either color_style() or no_style() in django.core.management.color.

If reset_sequences is True, the list includes SQL statements required to reset the sequences.

The allow_cascade argument determines whether truncation may cascade to tables with foreign keys pointing the tables being truncated. PostgreSQL requires a cascade even if these tables are empty.

def start_transaction_sql(self):
Return the SQL statement required to start a transaction.
def tablespace_sql(self, tablespace, inline=False):

Return the SQL that will be used in a query to define the tablespace.

Return '' if the backend doesn't support tablespaces.

If inline is True, append the SQL to a row; otherwise append it to the entire CREATE TABLE or CREATE INDEX statement.

def time_extract_sql(self, lookup_type, field_name):
Given a lookup_type of 'hour', 'minute', or 'second', return the SQL that extracts a value from the given time field field_name.
def time_trunc_sql(self, lookup_type, field_name, tzname=None):

Given a lookup_type of 'hour', 'minute' or 'second', return the SQL that truncates the given time or datetime field field_name to a time object with only the given specificity.

If tzname is provided, the given value is truncated in a specific timezone.

def unification_cast_sql(self, output_field):
Given a field instance, return the SQL that casts the result of a union to that type. The resulting string should contain a '%s' placeholder for the expression being cast.
def validate_autopk_value(self, value):
Certain backends do not accept some values for "serial" fields (for example zero in MySQL). Raise a ValueError if the value is invalid, otherwise return the validated value.
def window_frame_end(self, end):

Undocumented

def window_frame_range_start_end(self, start=None, end=None):

Undocumented

def window_frame_rows_start_end(self, start=None, end=None):
Return SQL for start and end points in an OVER clause window frame.
def window_frame_start(self, start):

Undocumented

def year_lookup_bounds_for_date_field(self, value, iso_year=False):

Return a two-elements list with the lower and upper bound to be used with a BETWEEN operator to query a DateField value using a year lookup.

value is an int, containing the looked-up year. If iso_year is True, return bounds for ISO-8601 week-numbering years.

def year_lookup_bounds_for_datetime_field(self, value, iso_year=False):

Return a two-elements list with the lower and upper bound to be used with a BETWEEN operator to query a DateTimeField value using a year lookup.

value is an int, containing the looked-up year. If iso_year is True, return bounds for ISO-8601 week-numbering years.

compiler_module: str =
set_operators: dict[str, str] =
_cache =

Undocumented

connection =

Undocumented