zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
U
¸ý°dã@sÈddlmZddlmZddlmZddlmZddlmZddlmZddl    m
Z ddl m Z dd    lmZdd
lmZd Zd d „ZGdd„de ƒZ
Gdd„de ƒZGdd„deƒZGdd„deƒZdS)é)Úutil)Ú    coercions)Úroles)Ú_exclusive_against)Ú _generative)ÚColumnCollection©ÚInsert)Ú ClauseElement)Úalias)ÚSelf)r    ÚinsertcCst|ƒS)aWConstruct a sqlite-specific variant :class:`_sqlite.Insert`
    construct.
 
    .. container:: inherited_member
 
        The :func:`sqlalchemy.dialects.sqlite.insert` function creates
        a :class:`sqlalchemy.dialects.sqlite.Insert`.  This class is based
        on the dialect-agnostic :class:`_sql.Insert` construct which may
        be constructed using the :func:`_sql.insert` function in
        SQLAlchemy Core.
 
    The :class:`_sqlite.Insert` construct includes additional methods
    :meth:`_sqlite.Insert.on_conflict_do_update`,
    :meth:`_sqlite.Insert.on_conflict_do_nothing`.
 
    r)Útable©rúUd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/dialects/sqlite/dml.pyr sr c@sfeZdZdZdZdZejdd„ƒZe    dddidZ
e e
de d
œd d „ƒƒZ e e
de d
œd d„ƒƒZd    S)r    a?SQLite-specific implementation of INSERT.
 
    Adds methods for SQLite-specific syntaxes such as ON CONFLICT.
 
    The :class:`_sqlite.Insert` object is created using the
    :func:`sqlalchemy.dialects.sqlite.insert` function.
 
    .. versionadded:: 1.4
 
    .. seealso::
 
        :ref:`sqlite_on_conflict_insert`
 
    ÚsqliteFcCst|jddjS)aÚProvide the ``excluded`` namespace for an ON CONFLICT statement
 
        SQLite's ON CONFLICT clause allows reference to the row that would
        be inserted, known as ``excluded``.  This attribute provides
        all columns in this row to be referenceable.
 
        .. tip::  The :attr:`_sqlite.Insert.excluded` attribute is an instance
            of :class:`_expression.ColumnCollection`, which provides an
            interface the same as that of the :attr:`_schema.Table.c`
            collection described at :ref:`metadata_tables_and_columns`.
            With this collection, ordinary names are accessible like attributes
            (e.g. ``stmt.excluded.some_column``), but special names and
            dictionary method names should be accessed using indexed access,
            such as ``stmt.excluded["column name"]`` or
            ``stmt.excluded["values"]``.  See the docstring for
            :class:`_expression.ColumnCollection` for further examples.
 
        Úexcluded)Úname)r rÚcolumns)Úselfrrrr?szInsert.excludedÚ_post_values_clausezCThis Insert construct already has an ON CONFLICT clause established)ZmsgsN)ÚreturncCst||||ƒ|_|S)aö
        Specifies a DO UPDATE SET action for ON CONFLICT clause.
 
        :param index_elements:
         A sequence consisting of string column names, :class:`_schema.Column`
         objects, or other column expression objects that will be used
         to infer a target index or unique constraint.
 
        :param index_where:
         Additional WHERE criterion that can be used to infer a
         conditional target index.
 
        :param set\_:
         A dictionary or other mapping object
         where the keys are either names of columns in the target table,
         or :class:`_schema.Column` objects or other ORM-mapped columns
         matching that of the target table, and expressions or literals
         as values, specifying the ``SET`` actions to take.
 
         .. versionadded:: 1.4 The
            :paramref:`_sqlite.Insert.on_conflict_do_update.set_`
            parameter supports :class:`_schema.Column` objects from the target
            :class:`_schema.Table` as keys.
 
         .. 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 CONFLICT style of
            UPDATE, unless they are manually specified in the
            :paramref:`.Insert.on_conflict_do_update.set_` dictionary.
 
        :param where:
         Optional argument. If present, can be a literal SQL
         string or an acceptable expression for a ``WHERE`` clause
         that restricts the rows affected by ``DO UPDATE SET``. Rows
         not meeting the ``WHERE`` condition will not be updated
         (effectively a ``DO NOTHING`` for those rows).
 
        )ÚOnConflictDoUpdater©rÚindex_elementsÚ index_whereÚset_ÚwhererrrÚon_conflict_do_update]s1ÿzInsert.on_conflict_do_updatecCst||ƒ|_|S)aµ
        Specifies a DO NOTHING action for ON CONFLICT clause.
 
        :param index_elements:
         A sequence consisting of string column names, :class:`_schema.Column`
         objects, or other column expression objects that will be used
         to infer a target index or unique constraint.
 
        :param index_where:
         Additional WHERE criterion that can be used to infer a
         conditional target index.
 
        )ÚOnConflictDoNothingr©rrrrrrÚon_conflict_do_nothing“s
ÿzInsert.on_conflict_do_nothing)NNNN)NN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ústringify_dialectZ inherit_cacherZmemoized_propertyrrZ_on_conflict_exclusiverr rr!rrrrr    ,s6
ÿþûú4ÿþr    c@seZdZdZddd„ZdS)ÚOnConflictClauserNcCs2|dk    rd|_||_||_nd|_|_|_dS)N)Zconstraint_targetZinferred_target_elementsZinferred_target_whereclauser rrrÚ__init__¯sþþzOnConflictClause.__init__)NN)r"r#r$r&r(rrrrr'¬sr'c@seZdZdZdS)rr!N)r"r#r$Ú__visit_name__rrrrr»srcs"eZdZdZd‡fdd„    Z‡ZS)rrNcsbtƒj||dt|tƒr(|sDtdƒ‚nt|tƒr<t|ƒ}ntdƒ‚dd„| ¡Dƒ|_||_dS)N)rrz*set parameter dictionary must not be emptyzqset parameter must be a non-empty dictionary or a ColumnCollection such as the `.c.` collection of a Table objectcSs"g|]\}}t tj|¡|f‘qSr)rÚexpectrZ DMLColumnRole)Ú.0ÚkeyÚvaluerrrÚ
<listcomp>Ùsÿz/OnConflictDoUpdate.__init__.<locals>.<listcomp>)    Úsuperr(Ú
isinstanceÚdictÚ
ValueErrorrÚitemsZupdate_values_to_setZupdate_whereclauser©Ú    __class__rrr(Âs þ
 
 
 
ÿþzOnConflictDoUpdate.__init__)NNNN)r"r#r$r)r(Ú __classcell__rrr4rr¿s ûrN)ÚrZsqlrrZsql.baserrrZsql.dmlr    ZStandardInsertZ sql.elementsr
Zsql.expressionr Z util.typingr Ú__all__r r'rrrrrrÚ<module>    s