Backend#
The backend manages the database connection and schema manipulation.
- trytond.backend.name#
The name of the backend configured.
Database#
- class trytond.backend.Database(name)#
Manage the connection to the named database.
- Database.connect()#
Connect to the database and return the instance.
- Database.get_connection([autocommit[, readonly]])#
Retrieve a connection object as defined by PEP 249#connection. If autocommit is set, the connection is committed after each statement. If readonly is set, the connection is read only.
- Database.put_connection(connection[, close])#
Release the connection. If close is set, the connection is discarded.
- Database.close()#
Close all connections.
- classmethod Database.create(connection, database_name)#
Create the named database using the connection.
- classmethod Database.drop(connection, database_name)#
Drop the named database using the connection.
- Database.list([hostname])#
Return a list of Tryton database names.
hostname
filters the databases with the same configured hostname.
- Database.init()#
Initialize the database schema.
- Database.test([hostname])#
Return if the database is a Tryton database. If
hostname
is set, it checks also if it has the same configured hostname.
- Database.nextid(connection, table[, count])#
Return the next
count
IDs for thetable
using theconnection
.Note
It may return
None
for some database.
- Database.setnextid(connection, table, value)#
Set the
value
as current ID to thetable
using theconnection
.
- Database.currid(connection, table)#
Return the current ID of the
table
using theconnection
.
- Database.estimated_count(connection, from_item)#
Return the estimated number of rows
- classmethod Database.lock(connection, table)#
Lock the
table
using theconnection
.
- Database.lock_id(id[, timeout])#
Return the SQL expression to lock the
id
. Settimeout
to wait for the lock.
- Database.has_constraint(constraint)#
Return if the database handle the
constraint
.
- Database.has_returning()#
Return if the database supports
RETURNING
inINSERT
andUPDATE
.
- Database.has_multirow_insert()#
Return if the database supports
INSERT
of multi-rows.
- Database.has_select_for()#
Return if the database supports
FOR UPDATE
andFOR SHARE
inSELECT
.
- Database.has_insert_on_conflict()#
Return if the database supports
ON CONFLICT
ININSERT
.
- Database.get_select_for_skip_locked()#
Return For class with skip locked.
- Database.has_window_functions()#
Return if the database supports window functions.
- Database.has_unaccent()#
Return if the database suppport unaccentuated function.
- Database.has_unaccent_indexable()#
Return if the database suppport unaccentuated function in index.
- Database.unaccent(value)#
Return the SQL expression of unaccentuated
value
.
- Database.has_similarity()#
Return if the database suppports similarity function.
- Database.similarity(column, value)#
Return the SQL expression that compare the similarity of
column
andvalue
.
- Database.has_search_full_text()#
Return if the database suppports full text search.
- Database.format_full_text(\*documents[, language])#
Return the SQL expression that format the
documents
into text search vectors for thelanguage
.The order of
documents
define the weight for proximity ranking.
- Database.format_full_text_query(query[, language])#
Convert the
query
expression into full text query.
- Database.search_full_text(document, query)#
Return the SQL expression for searching
document
with thequery
.
- Database.rank_full_text(document, query[, normalize])#
Return the SQL expression to rank
document
with thequery
.
- classmethod Database.has_sequence()#
Return if the database supports sequence querying and assignation.
- Database.sequence_exist(connection, name)#
Return if the named sequence exists using the
connection
.
- Database.sequence_create(connection, name[, number_increment[, start_value]])#
Create a named sequence incremented by
number_increment
or1
and starting atstart_value
or1
using theconnection
.
- Database.sequence_update(connection, name[, number_increment[, start_value]])#
Modify the named sequence with
number_increment
andstart_value
using theconnection
.
- Database.sequence_rename(connection, old_name, new_name)#
Rename the sequece from
old_name
tonew_name
using theconnection
.
- Database.sequence_delete(connection, name)#
Delete the named sequence using the
connection
.
- Database.sequence_nextval(connection, name)#
Advances the named sequence and returns its next value.
- Database.sequence_nextvals(connection, name, n)#
Advances the named sequence n times and yields the next values.
- Database.sequence_next_number(connection, name)#
Return the next number fo the named sequence using the
connection
.
- Database.has_channel(connection, name)#
Return if the database supports
LISTEN
andNOTIFY
on channel.
- Database.sql_type(type_)#
Return the namedtuple(‘SQLType’, ‘base type’) corresponding to the SQL
type_
.
- Database.sql_format(type_, value)#
Return the
value
casted for the SQLtype_
.
- Database.json_get(column[, key])#
Return the JSON value of the JSON
key
from thecolumn
.
- Database.json_key_exists(column, key)#
Return the SQL expression to test if
key
exists in the JSONcolumn
.
- Database.json_any_keys_exist(column, keys)#
Return the SQL expression to test if any
keys
exist in the JSONcolumn
.
- Database.json_all_keys_exist(column, keys)#
Return the SQL expression to test if all
keys
exist in the JSONcolumn
.
- Database.json_contains(column, json)#
Rteurn the SQL expression to test if the JSON
column
containsjson
.
TableHandler#
- class trytond.backend.TableHandler(model[, history])#
Handle table for the
model
. Ifhistory
is set, the table is the one storing the history.
- TableHandler.namedatalen#
The maximing length of named data for the database.
- TableHandler.index_translators#
Contain the
IndexTranslator
for the database.
- classmethod TableHandler.table_exist(table_name)#
Return if the named table exists.
- classmethod TableHandler.table_rename(old_name, new_name)#
Rename the table from
old_name
tonew_name
.
- TableHandler.column_exist(column_name)#
Return if the named column exists.
- TableHandler.column_rename(old_name, new_name)#
Rename the column from
old_name
tonew_name
.
- TableHandler.alter_size(column_name, column_type)#
Modify the size of the named column using the column type.
- TableHandler.alter_type(column_name, column_type)#
Modify the type of the named column.
- TableHandler.column_is_type(column_name, type_[, size])#
Return if the column is of type
type_
. Iftype
isVARCHAR
,size
is also compared except if the value if negative.
- TableHandler.db_default(column_name, value)#
Set the default
value
on the named column.
- TableHandler.add_column(column_name, abstract_type[, default[, comment]])#
Add the named column of abstract type. The
default
is a method that return the value to fill the new column.comment
set as comment for the column.
- TableHandler.add_fk(columns, reference[, ref_columns[, on_delete])#
Add a foreign key constraint on the named columns to target the
ref_columns
ofreference
table name.on_delete
defines the method to use when foreign record is deleted.
- TableHandler.drop_fk(columns[, ref_columns[, table])#
Drop the foreign key constraint on the named columns targeting the
ref_columns
.table
can be used to alter another table.
- TableHandler.not_null_action(column_name[, action])#
Add or remove
NOT NULL
on the named column.
- TableHandler.add_constraint(ident, constraint)#
Add the SQL expression
constraint
as constraint namedident
on the table.
- TableHandler.drop_constraint(ident[, table])#
Drop the named
ident
constraint.table
can be used to alter another table.
- TableHandler.set_indexes(indexes[, concurrently])#
Create the
indexes
if possible and drop others havingidx_
as prefix or_index
as suffix.If
concurrently
is set indexes are created concurrently if possible. It defaults toFalse
.
- TableHandler.drop_column(column_name)#
Drop the named column.
- classmethod TableHandler.drop_table(model, table[, cascade])#
Drop the named
table
and cleanir.model.data
from the givenmodel
. Setcascade
to drop objects that depend on the table.
- classmethod TableHandler.convert_name(name[, reserved])#
Convert the data name to be lower than namedatalen minus reserved.
- Database.index_translator_for(index)#
Return the best
IndexTranslator
for the given index.
IndexTranslator#
Exceptions#
- exception trytond.backend.DatabaseIntegrityError#
Exception raised when the relational integrity of the database is affected.
- exception trytond.backend.DatabaseDataError#
Exception raised for errors that are due to problems with the processed data.
- exception trytond.backend.DatabaseOperationalError#
Exception raised for errors that are related to the database’s operation.