class documentation

class ValuesBase(UpdateBase):

Known subclasses: sqlalchemy.sql.expression.Insert, sqlalchemy.sql.expression.Update

View In Hierarchy

Supplies support for .ValuesBase.values to INSERT and UPDATE constructs.
Method __init__ Undocumented
Method return​_defaults Make use of a :term:`RETURNING` clause for the purpose of fetching server-side expressions and defaults.
Method values Specify a fixed VALUES clause for an INSERT statement, or the SET clause for an UPDATE.
Class Variable __visit​_name__ Undocumented
Class Variable ​_multi​_values Undocumented
Class Variable ​_post​_values​_clause Undocumented
Class Variable ​_preserve​_parameter​_order Undocumented
Class Variable ​_returning Undocumented
Class Variable ​_select​_names Undocumented
Class Variable ​_supports​_multi​_parameters Undocumented
Class Variable ​_values Undocumented
Class Variable select Undocumented
Instance Variable ​_ordered​_values Undocumented
Instance Variable ​_return​_defaults Undocumented
Instance Variable ​_return​_defaults​_columns Undocumented
Instance Variable table Undocumented

Inherited from UpdateBase:

Class Method ​_constructor​_20​_deprecations Undocumented
Method ​_generate​_fromclause​_column​_proxies Undocumented
Method ​_set​_bind Undocumented
Method ​_validate​_dialect​_kwargs​_deprecated Undocumented
Method bind Return a 'bind' linked to this .UpdateBase or a _schema.Table associated with it.
Method params Set the parameters for the statement.
Method returning Add a :term:`RETURNING` or equivalent clause to this statement.
Method with​_dialect​_options Add dialect options to this INSERT/UPDATE/DELETE object.
Method with​_hint Add a table hint for a single table to this INSERT/UPDATE/DELETE statement.
Class Variable ​_execution​_options Undocumented
Class Variable is​_dml Undocumented
Class Variable named​_with​_column Undocumented
Instance Variable ​_bind Undocumented
Instance Variable ​_hints Undocumented
Property ​_all​_selected​_columns A sequence of column expression objects that represents the "selected" columns of this _expression.ReturnsRows.
Property exported​_columns Return the RETURNING columns as a column collection for this statement.

Inherited from StatementRole (via UpdateBase, DMLRole):

Class Variable ​_propagate​_attrs Undocumented
Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via UpdateBase, DMLRole, StatementRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from HasCTE (via UpdateBase):

Method add​_cte Add a _sql.CTE to this statement object that will be independently rendered even if not referenced in the statement otherwise.
Method cte Return a new _expression.CTE, or Common Table Expression instance.
Class Variable ​_has​_ctes​_traverse​_internals Undocumented
Class Variable ​_independent​_ctes Undocumented

Inherited from ReturnsRowsRole (via UpdateBase, HasCTE, HasCTERole):

Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via UpdateBase, HasCTE, HasCTERole, ReturnsRowsRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from HasCompileState (via UpdateBase):

Class Variable ​_attributes Undocumented
Class Variable ​_compile​_state​_plugin Undocumented

Inherited from Generative (via UpdateBase, HasCompileState):

Method ​_generate Undocumented

Inherited from DialectKWArgs (via UpdateBase):

Class Method argument​_for Add a new kind of dialect-specific keyword argument for this class.
Method ​_kw​_reg​_for​_dialect​_cls Undocumented
Method ​_validate​_dialect​_kwargs Undocumented
Class Variable ​_dialect​_kwargs​_traverse​_internals Undocumented
Class Variable ​_kw​_registry Undocumented
Property dialect​_kwargs A collection of keyword arguments specified as dialect-specific options to this construct.
Property dialect​_options A collection of keyword arguments specified as dialect-specific options to this construct.
Property kwargs A synonym for .DialectKWArgs.dialect_kwargs.

Inherited from HasPrefixes (via UpdateBase):

Method ​_setup​_prefixes Undocumented
Method prefix​_with Add one or more expressions following the statement keyword, i.e. SELECT, INSERT, UPDATE, or DELETE. Generative.
Class Variable ​_has​_prefixes​_traverse​_internals Undocumented
Instance Variable ​_prefixes Undocumented

Inherited from ReturnsRows (via UpdateBase):

Class Variable ​_is​_from​_clause Undocumented
Class Variable ​_is​_lateral Undocumented
Class Variable ​_is​_returns​_rows Undocumented
Class Variable ​_is​_select​_statement Undocumented
Property selectable Undocumented

Inherited from ReturnsRowsRole (via UpdateBase, ReturnsRows):

Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via UpdateBase, ReturnsRows, ReturnsRowsRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from ClauseElement (via UpdateBase, ReturnsRows):

Method compare Compare this _expression.ClauseElement to the given _expression.ClauseElement.
Method compile Compile this SQL expression.
Method self​_group Apply a 'grouping' to this _expression.ClauseElement.
Method unique​_params Return a copy with _expression.bindparam elements replaced.
Method __bool__ Undocumented
Method __getstate__ Undocumented
Method __invert__ Undocumented
Method __repr__ Undocumented
Method __str__ Undocumented
Method ​_clone Create a shallow copy of this ClauseElement.
Method ​_cloned​_set Return the set consisting all cloned ancestors of this ClauseElement.
Method ​_compile​_w​_cache Undocumented
Method ​_compiler Return a compiler appropriate for this ClauseElement, given a Dialect.
Method ​_execute​_on​_connection Undocumented
Method ​_negate Undocumented
Method ​_negate​_in​_binary a hook to allow the right side of a binary expression to respond to a negation of the binary expression.
Method ​_replace​_params Undocumented
Method ​_set​_propagate​_attrs Undocumented
Method ​_ungroup Return this _expression.ClauseElement without any groupings.
Method ​_with​_binary​_element​_type in the context of binary expression, convert the type of this object to the one given.
Class Variable ​_cache​_key​_traversal Undocumented
Class Variable ​_from​_objects Undocumented
Class Variable ​_is​_bind​_parameter Undocumented
Class Variable ​_is​_clause​_list Undocumented
Class Variable ​_is​_clone​_of Undocumented
Class Variable ​_is​_from​_container Undocumented
Class Variable ​_is​_immutable Undocumented
Class Variable ​_is​_lambda​_element Undocumented
Class Variable ​_is​_select​_container Undocumented
Class Variable ​_is​_singleton​_constant Undocumented
Class Variable ​_is​_text​_clause Undocumented
Class Variable ​_is​_textual Undocumented
Class Variable ​_order​_by​_label​_element Undocumented
Class Variable description Undocumented
Class Variable is​_clause​_element Undocumented
Class Variable is​_selectable Undocumented
Class Variable stringify​_dialect Undocumented
Class Variable supports​_execution Undocumented
Instance Variable ​_propagate​_attrs like annotations, however these propagate outwards liberally as SQL constructs are built, and are set up at construction time.
Property ​_constructor return the 'constructor' for this ClauseElement.
Property entity​_namespace Undocumented

Inherited from SQLRole (via UpdateBase, ReturnsRows, ClauseElement):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from SupportsWrappingAnnotations (via UpdateBase, ReturnsRows, ClauseElement):

Method ​_annotate return a copy of this ClauseElement with annotations updated by the given dictionary.
Method ​_deannotate return a copy of this _expression.ClauseElement with annotations removed.
Method ​_with​_annotations return a copy of this ClauseElement with annotations replaced by the given dictionary.

Inherited from SupportsAnnotations (via UpdateBase, ReturnsRows, ClauseElement, SupportsWrappingAnnotations):

Property ​_annotations​_cache​_key Undocumented

Inherited from MemoizedHasCacheKey (via UpdateBase, ReturnsRows, ClauseElement):

Method ​_generate​_cache​_key return a cache key.

Inherited from HasCacheKey (via UpdateBase, ReturnsRows, ClauseElement, MemoizedHasCacheKey):

Class Variable inherit​_cache Indicate if this .HasCacheKey instance should make use of the cache key generation scheme used by its immediate superclass.
Class Method ​_generate​_cache​_attrs generate cache key dispatcher for a new class.
Class Method ​_generate​_cache​_key​_for​_object Undocumented
Method ​_gen​_cache​_key return an optional cache key.
Class Variable __slots__ Undocumented
Class Variable ​_hierarchy​_supports​_caching private attribute which may be set to False to prevent the inherit_cache warning from being emitted for a hierarchy of subclasses.
Class Variable ​_is​_has​_cache​_key Undocumented

Inherited from HasCopyInternals (via UpdateBase, ReturnsRows, ClauseElement):

Method ​_copy​_internals Reassign internal elements to be clones of themselves.

Inherited from Traversible (via UpdateBase, ReturnsRows, ClauseElement):

Method get​_children Return immediate child .visitors.Traversible elements of this .visitors.Traversible.
Method __class​_getitem__ Undocumented

Inherited from Executable (via UpdateBase):

Method ​_add​_context​_option Add a context option to this statement.
Method ​_set​_compile​_options Assign the compile options to a new value.
Method ​_update​_compile​_options update the _compile_options with new keys.
Method execute Compile and execute this .Executable.
Method execution​_options Set non-SQL options for the statement which take effect during execution.
Method get​_execution​_options Get the non-SQL options which will take effect during execution.
Method options Apply options to this statement.
Method scalar Compile and execute this .Executable, returning the result's scalar representation.
Class Variable ​_executable​_traverse​_internals Undocumented
Class Variable ​_with​_context​_options Undocumented
Class Variable ​_with​_options Undocumented
Class Variable is​_delete Undocumented
Class Variable is​_insert Undocumented
Class Variable is​_select Undocumented
Class Variable is​_text Undocumented
Class Variable is​_update Undocumented
Class Variable supports​_execution Undocumented
Instance Variable ​_compile​_options Undocumented
Property ​_effective​_plugin​_target Undocumented

Inherited from StatementRole (via UpdateBase, Executable):

Class Variable ​_propagate​_attrs Undocumented
Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via UpdateBase, Executable, StatementRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from Generative (via UpdateBase, Executable):

Method ​_generate Undocumented

Inherited from ClauseElement (via UpdateBase):

Method compare Compare this _expression.ClauseElement to the given _expression.ClauseElement.
Method compile Compile this SQL expression.
Method self​_group Apply a 'grouping' to this _expression.ClauseElement.
Method unique​_params Return a copy with _expression.bindparam elements replaced.
Method __bool__ Undocumented
Method __getstate__ Undocumented
Method __invert__ Undocumented
Method __repr__ Undocumented
Method __str__ Undocumented
Method ​_clone Create a shallow copy of this ClauseElement.
Method ​_cloned​_set Return the set consisting all cloned ancestors of this ClauseElement.
Method ​_compile​_w​_cache Undocumented
Method ​_compiler Return a compiler appropriate for this ClauseElement, given a Dialect.
Method ​_execute​_on​_connection Undocumented
Method ​_negate Undocumented
Method ​_negate​_in​_binary a hook to allow the right side of a binary expression to respond to a negation of the binary expression.
Method ​_replace​_params Undocumented
Method ​_set​_propagate​_attrs Undocumented
Method ​_ungroup Return this _expression.ClauseElement without any groupings.
Method ​_with​_binary​_element​_type in the context of binary expression, convert the type of this object to the one given.
Class Variable ​_cache​_key​_traversal Undocumented
Class Variable ​_from​_objects Undocumented
Class Variable ​_is​_bind​_parameter Undocumented
Class Variable ​_is​_clause​_list Undocumented
Class Variable ​_is​_clone​_of Undocumented
Class Variable ​_is​_from​_clause Undocumented
Class Variable ​_is​_from​_container Undocumented
Class Variable ​_is​_immutable Undocumented
Class Variable ​_is​_lambda​_element Undocumented
Class Variable ​_is​_returns​_rows Undocumented
Class Variable ​_is​_select​_container Undocumented
Class Variable ​_is​_select​_statement Undocumented
Class Variable ​_is​_singleton​_constant Undocumented
Class Variable ​_is​_text​_clause Undocumented
Class Variable ​_is​_textual Undocumented
Class Variable ​_order​_by​_label​_element Undocumented
Class Variable description Undocumented
Class Variable is​_clause​_element Undocumented
Class Variable is​_selectable Undocumented
Class Variable stringify​_dialect Undocumented
Class Variable supports​_execution Undocumented
Instance Variable ​_propagate​_attrs like annotations, however these propagate outwards liberally as SQL constructs are built, and are set up at construction time.
Property ​_constructor return the 'constructor' for this ClauseElement.
Property entity​_namespace Undocumented

Inherited from SQLRole (via UpdateBase, ClauseElement):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from SupportsWrappingAnnotations (via UpdateBase, ClauseElement):

Method ​_annotate return a copy of this ClauseElement with annotations updated by the given dictionary.
Method ​_deannotate return a copy of this _expression.ClauseElement with annotations removed.
Method ​_with​_annotations return a copy of this ClauseElement with annotations replaced by the given dictionary.

Inherited from SupportsAnnotations (via UpdateBase, ClauseElement, SupportsWrappingAnnotations):

Property ​_annotations​_cache​_key Undocumented

Inherited from MemoizedHasCacheKey (via UpdateBase, ClauseElement):

Method ​_generate​_cache​_key return a cache key.

Inherited from HasCacheKey (via UpdateBase, ClauseElement, MemoizedHasCacheKey):

Class Variable inherit​_cache Indicate if this .HasCacheKey instance should make use of the cache key generation scheme used by its immediate superclass.
Class Method ​_generate​_cache​_attrs generate cache key dispatcher for a new class.
Class Method ​_generate​_cache​_key​_for​_object Undocumented
Method ​_gen​_cache​_key return an optional cache key.
Class Variable __slots__ Undocumented
Class Variable ​_hierarchy​_supports​_caching private attribute which may be set to False to prevent the inherit_cache warning from being emitted for a hierarchy of subclasses.
Class Variable ​_is​_has​_cache​_key Undocumented

Inherited from HasCopyInternals (via UpdateBase, ClauseElement):

Method ​_copy​_internals Reassign internal elements to be clones of themselves.

Inherited from Traversible (via UpdateBase, ClauseElement):

Method get​_children Return immediate child .visitors.Traversible elements of this .visitors.Traversible.
Method __class​_getitem__ Undocumented
def __init__(self, table, values, prefixes):
@_generative
@_exclusive_against('_returning', msgs={'_returning': 'RETURNING is already configured on this statement'}, defaults={'_returning': _returning})
def return_defaults(self, *cols):

Make use of a :term:`RETURNING` clause for the purpose of fetching server-side expressions and defaults.

E.g.:

stmt = table.insert().values(data='newdata').return_defaults()

result = connection.execute(stmt)

server_created_at = result.returned_defaults['created_at']

When used against a backend that supports RETURNING, all column values generated by SQL expression or server-side-default will be added to any existing RETURNING clause, provided that .UpdateBase.returning is not used simultaneously. The column values will then be available on the result using the _engine.CursorResult.returned_defaults accessor as a dictionary, referring to values keyed to the _schema.Column object as well as its .key.

This method differs from .UpdateBase.returning in these ways:

  1. .ValuesBase.return_defaults is only intended for use with an INSERT or an UPDATE statement that matches exactly one row per parameter set. While the RETURNING construct in the general sense supports multiple rows for a multi-row UPDATE or DELETE statement, or for special cases of INSERT that return multiple rows (e.g. INSERT from SELECT, multi-valued VALUES clause), .ValuesBase.return_defaults is intended only for an "ORM-style" single-row INSERT/UPDATE statement. The row returned by the statement is also consumed implicitly when .ValuesBase.return_defaults is used. By contrast, .UpdateBase.returning leaves the RETURNING result-set intact with a collection of any number of rows.

  2. It is compatible with the existing logic to fetch auto-generated primary key values, also known as "implicit returning". Backends that support RETURNING will automatically make use of RETURNING in order to fetch the value of newly generated primary keys; while the .UpdateBase.returning method circumvents this behavior, .ValuesBase.return_defaults leaves it intact.

  3. It can be called against any backend. Backends that don't support RETURNING will skip the usage of the feature, rather than raising an exception. The return value of _engine.CursorResult.returned_defaults will be None

  4. An INSERT statement invoked with executemany() is supported if the backend database driver supports the insert_executemany_returning feature, currently this includes PostgreSQL with psycopg2. When executemany is used, the _engine.CursorResult.returned_defaults_rows and _engine.CursorResult.inserted_primary_key_rows accessors will return the inserted defaults and primary keys.

    New in version 1.4.

.ValuesBase.return_defaults is used by the ORM to provide an efficient implementation for the eager_defaults feature of .mapper.

New in version 0.9.0.

See Also

.UpdateBase.returning

_engine.CursorResult.returned_defaults

_engine.CursorResult.returned_defaults_rows

_engine.CursorResult.inserted_primary_key

_engine.CursorResult.inserted_primary_key_rows

Parameters
*colsoptional list of column key names or _schema.Column objects. If omitted, all column expressions evaluated on the server are added to the returning list.
@_generative
@_exclusive_against('_select_names', '_ordered_values', msgs={'_select_names': 'This construct already inserts from a SELECT', '_ordered_values': 'This statement already has ordered values present'})
def values(self, *args, **kwargs):

Specify a fixed VALUES clause for an INSERT statement, or the SET clause for an UPDATE.

Note that the _expression.Insert and _expression.Update constructs support per-execution time formatting of the VALUES and/or SET clauses, based on the arguments passed to _engine.Connection.execute. However, the .ValuesBase.values method can be used to "fix" a particular set of parameters into the statement.

Multiple calls to .ValuesBase.values will produce a new construct, each one with the parameter list modified to include the new parameters sent. In the typical case of a single dictionary of parameters, the newly passed keys will replace the same keys in the previous construct. In the case of a list-based "multiple values" construct, each new list of values is extended onto the existing list of values.

Parameters
*args

As an alternative to passing key/value parameters, a dictionary, tuple, or list of dictionaries or tuples can be passed as a single positional argument in order to form the VALUES or SET clause of the statement. The forms that are accepted vary based on whether this is an _expression.Insert or an _expression.Update construct.

For either an _expression.Insert or _expression.Update construct, a single dictionary can be passed, which works the same as that of the kwargs form:

users.insert().values({"name": "some name"})

users.update().values({"name": "some new name"})

Also for either form but more typically for the _expression.Insert construct, a tuple that contains an entry for every column in the table is also accepted:

users.insert().values((5, "some name"))

The _expression.Insert construct also supports being passed a list of dictionaries or full-table-tuples, which on the server will render the less common SQL syntax of "multiple values" - this syntax is supported on backends such as SQLite, PostgreSQL, MySQL, but not necessarily others:

users.insert().values([
                    {"name": "some name"},
                    {"name": "some other name"},
                    {"name": "yet another name"},
                ])

The above form would render a multiple VALUES statement similar to:

INSERT INTO users (name) VALUES
                (:name_1),
                (:name_2),
                (:name_3)

It is essential to note that passing multiple values is NOT the same as using traditional executemany() form. The above syntax is a special syntax not typically used. To emit an INSERT statement against multiple rows, the normal method is to pass a multiple values list to the _engine.Connection.execute method, which is supported by all database backends and is generally more efficient for a very large number of parameters.

See Also

:ref:`execute_multiple` - an introduction to the traditional Core method of multiple parameter set invocation for INSERTs and other statements.

Changed in version 1.0.0: an INSERT that uses a multiple-VALUES clause, even a list of length one, implies that the :paramref:`_expression.Insert.inline` flag is set to True, indicating that the statement will not attempt to fetch the "last inserted primary key" or other defaults. The statement deals with an arbitrary number of rows, so the _engine.CursorResult.inserted_primary_key accessor does not apply.
Changed in version 1.0.0: A multiple-VALUES INSERT now supports columns with Python side default values and callables in the same way as that of an "executemany" style of invocation; the callable is invoked for each row. See :ref:`bug_3288` for other details.

The UPDATE construct also supports rendering the SET parameters in a specific order. For this feature refer to the _expression.Update.ordered_values method.

See Also

_expression.Update.ordered_values

**kwargs

key value pairs representing the string key of a _schema.Column mapped to the value to be rendered into the VALUES or SET clause:

users.insert().values(name="some name")

users.update().where(users.c.id==5).values(name="some name")
_multi_values: tuple =

Undocumented

_post_values_clause =

Undocumented

_preserve_parameter_order: bool =

Undocumented

_select_names =

Undocumented

_supports_multi_parameters: bool =

Undocumented

_values =

Undocumented

select =

Undocumented

_ordered_values =

Undocumented

_return_defaults_columns =
table =

Undocumented