class Insert(StandardInsert):
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.
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 |
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.
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 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.
|
**kw | Column keys linked to UPDATE values. The values may be any SQL expression or supported literal Python values. |
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