Module « sqlalchemy »
Signature de la fonction update
def update(table, whereclause=None, values=None, inline=False, bind=None, prefixes=None, returning=None, return_defaults=False, preserve_parameter_order=False, **dialect_kw)
Description
update.__doc__
Construct an :class:`_expression.Update` object.
E.g.::
from sqlalchemy import update
stmt = (
update(user_table).
where(user_table.c.id == 5).
values(name='user #5')
)
Similar functionality is available via the
:meth:`_expression.TableClause.update` method on
:class:`_schema.Table`.
.. seealso::
:ref:`inserts_and_updates` - in the
:ref:`1.x tutorial <sqlexpression_toplevel>`
:ref:`tutorial_core_update_delete` - in the :ref:`unified_tutorial`
:param table: A :class:`_schema.Table`
object representing the database
table to be updated.
:param whereclause: Optional SQL expression describing the ``WHERE``
condition of the ``UPDATE`` statement; is equivalent to using the
more modern :meth:`~Update.where()` method to specify the ``WHERE``
clause.
.. deprecated:: 1.4 The :paramref:`_expression.update.whereclause` parameter will be removed in SQLAlchemy 2.0. Please refer to the :meth:`_expression.Update.where` method.
:param values:
Optional dictionary which specifies the ``SET`` conditions of the
``UPDATE``. If left as ``None``, the ``SET``
conditions are determined from those parameters passed to the
statement during the execution and/or compilation of the
statement. When compiled standalone without any parameters,
the ``SET`` clause generates for all columns.
.. deprecated:: 1.4 The :paramref:`_expression.update.values` parameter will be removed in SQLAlchemy 2.0. Please refer to the :meth:`_expression.Update.values` method.
Modern applications may prefer to use the generative
:meth:`_expression.Update.values` method to set the values of the
UPDATE statement.
:param inline:
if True, SQL defaults present on :class:`_schema.Column` objects via
the ``default`` keyword will be compiled 'inline' into the statement
and not pre-executed. This means that their values will not
be available in the dictionary returned from
:meth:`_engine.CursorResult.last_updated_params`.
.. deprecated:: 1.4 The :paramref:`_expression.update.inline` parameter will be removed in SQLAlchemy 2.0. Please use the :meth:`_expression.Update.inline` method.
:param preserve_parameter_order: if True, the update statement is
expected to receive parameters **only** via the
:meth:`_expression.Update.values` method,
and they must be passed as a Python
``list`` of 2-tuples. The rendered UPDATE statement will emit the SET
clause for each referenced column maintaining this order.
.. deprecated:: 1.4 The :paramref:`_expression.update.preserve_parameter_order` parameter will be removed in SQLAlchemy 2.0. Use the :meth:`_expression.Update.ordered_values` method with a list of tuples.
.. versionadded:: 1.0.10
.. seealso::
:ref:`updates_order_parameters` - illustrates the
:meth:`_expression.Update.ordered_values` method.
If both ``values`` and compile-time bind parameters are present, the
compile-time bind parameters override the information specified
within ``values`` on a per-key basis.
The keys within ``values`` can be either :class:`_schema.Column`
objects or their string identifiers (specifically the "key" of the
:class:`_schema.Column`, normally but not necessarily equivalent to
its "name"). Normally, the
:class:`_schema.Column` objects used here are expected to be
part of the target :class:`_schema.Table` that is the table
to be updated. However when using MySQL, a multiple-table
UPDATE statement can refer to columns from any of
the tables referred to in the WHERE clause.
The values referred to in ``values`` are typically:
* a literal data value (i.e. string, number, etc.)
* a SQL expression, such as a related :class:`_schema.Column`,
a scalar-returning :func:`_expression.select` construct,
etc.
When combining :func:`_expression.select` constructs within the
values clause of an :func:`_expression.update`
construct, the subquery represented
by the :func:`_expression.select` should be *correlated* to the
parent table, that is, providing criterion which links the table inside
the subquery to the outer table being updated::
users.update().values(
name=select(addresses.c.email_address).\
where(addresses.c.user_id==users.c.id).\
scalar_subquery()
)
.. seealso::
:ref:`inserts_and_updates` - SQL Expression
Language Tutorial
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :