class documentation

class Insert(StandardInsert):

View In Hierarchy

MySQL-specific implementation of INSERT.

Adds methods for MySQL-specific syntaxes such as ON DUPLICATE KEY UPDATE.

The ~.mysql.Insert object is created using the sqlalchemy.dialects.mysql.insert function.

New in version 1.2.
Method on​_duplicate​_key​_update Specifies the ON DUPLICATE KEY UPDATE clause.
Class Variable inherit​_cache Undocumented
Class Variable stringify​_dialect Undocumented
Instance Variable ​_post​_values​_clause Undocumented
Property inserted Provide the "inserted" namespace for an ON DUPLICATE KEY UPDATE statement
Property inserted​_alias Undocumented
@_generative
@_exclusive_against('_post_values_clause', msgs={'_post_values_clause': 'This Insert construct already has an ON DUPLICATE KEY clause present'})
def on_duplicate_key_update(self, *args, **kw):

Specifies the ON DUPLICATE KEY UPDATE clause.

Warning

This dictionary does not take into account Python-specified default UPDATE values or generation functions, e.g. those specified using :paramref:`_schema.Column.onupdate`. These values will not be exercised for an ON DUPLICATE KEY UPDATE style of UPDATE, unless values are manually specified here.

New in version 1.2.
Parameters
*args

As an alternative to passing key/value parameters, a dictionary or list of 2-tuples can be passed as a single positional argument.

Passing a single dictionary is equivalent to the keyword argument form:

insert().on_duplicate_key_update({"name": "some name"})

Passing a list of 2-tuples indicates that the parameter assignments in the UPDATE clause should be ordered as sent, in a manner similar to that described for the _expression.Update construct overall in :ref:`updates_order_parameters`:

insert().on_duplicate_key_update(
    [("name", "some name"), ("value", "some value")])
Changed in version 1.3: parameters can be specified as a dictionary or list of 2-tuples; the latter form provides for parameter ordering.
**kwColumn keys linked to UPDATE values. The values may be any SQL expression or supported literal Python values.
inherit_cache: bool =

Undocumented

stringify_dialect: str =

Undocumented

_post_values_clause =

Undocumented

@property
inserted =

Provide the "inserted" namespace for an ON DUPLICATE KEY UPDATE statement

MySQL's ON DUPLICATE KEY UPDATE clause allows reference to the row that would be inserted, via a special function called VALUES(). This attribute provides all columns in this row to be referenceable such that they will render within a VALUES() function inside the ON DUPLICATE KEY UPDATE clause. The attribute is named .inserted so as not to conflict with the existing _expression.Insert.values method.

Tip

The _mysql.Insert.inserted attribute is an instance of _expression.ColumnCollection, which provides an interface the same as that of the _schema.Table.c collection described at :ref:`metadata_tables_and_columns`. With this collection, ordinary names are accessible like attributes (e.g. stmt.inserted.some_column), but special names and dictionary method names should be accessed using indexed access, such as stmt.inserted["column name"] or stmt.inserted["values"]. See the docstring for _expression.ColumnCollection for further examples.

See Also

:ref:`mysql_insert_on_duplicate_key_update` - example of how to use _expression.Insert.inserted

@util.memoized_property
inserted_alias =

Undocumented