HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyc
�
���ec@s4ddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZ
ddlmZddlmZdd
lmZdZde
fd��YZeedd�Zdefd��YZdefd��YZdefd��YZdS(i(texti(tutil(t	coercions(troles(tschema(t_exclusive_against(t_generative(tColumnCollection(tInsert(t
ClauseElement(talias(tpublic_factoryRtinsertcBs�eZdZdZeZejd��Ze	ddidd6�Z
ee
dddddd���Z
ee
dddd���ZRS(	sPostgreSQL-specific implementation of INSERT.

    Adds methods for PG-specific syntaxes such as ON CONFLICT.

    The :class:`_postgresql.Insert` object is created using the
    :func:`sqlalchemy.dialects.postgresql.insert` function.

    .. versionadded:: 1.1

    t
postgresqlcCst|jdd�jS(skProvide the ``excluded`` namespace for an ON CONFLICT statement

        PG'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:`_postgresql.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.

        .. seealso::

            :ref:`postgresql_insert_on_conflict` - example of how
            to use :attr:`_expression.Insert.excluded`

        tnametexcluded(R
ttabletcolumns(tself((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyR(st_post_values_clausetmsgssCThis Insert construct already has an ON CONFLICT clause establishedcCst|||||�|_dS(ss
        Specifies a DO UPDATE SET action for ON CONFLICT clause.

        Either the ``constraint`` or ``index_elements`` argument is
        required, but only one of these can be specified.

        :param constraint:
         The name of a unique or exclusion constraint on the table,
         or the constraint object itself if it has a .name attribute.

        :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.

        :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:`_postgresql.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).

         .. versionadded:: 1.1


        .. seealso::

            :ref:`postgresql_insert_on_conflict`

        N(tOnConflictDoUpdateR(Rt
constrainttindex_elementstindex_wheretset_twhere((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyton_conflict_do_updateKs?cCst|||�|_dS(s)
        Specifies a DO NOTHING action for ON CONFLICT clause.

        The ``constraint`` and ``index_elements`` arguments
        are optional, but only one of these can be specified.

        :param constraint:
         The name of a unique or exclusion constraint on the table,
         or the constraint object itself if it has a .name attribute.

        :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.

        :param index_where:
         Additional WHERE criterion that can be used to infer a
         conditional target index.

         .. versionadded:: 1.1

        .. seealso::

            :ref:`postgresql_insert_on_conflict`

        N(tOnConflictDoNothingR(RRRR((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyton_conflict_do_nothing�sN(t__name__t
__module__t__doc__tstringify_dialecttFalset
inherit_cacheRtmemoized_propertyRRt_on_conflict_exclusiveRtNoneRR(((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyRs$

;s.dialects.postgresql.inserts.dialects.postgresql.InserttOnConflictClausecBs eZdZdddd�ZRS(R
cCs}|dk	rUt|tj�rUt|tjtjf�rUt|d�pL|}qUn|dk	r)|dk	r|t	d��nt|tj�r�||_
d|_d|_q)t|tj
�r�|j}|jdjd�}q)t|tj�r|j}|j}q)|j}|jdjd�}n|dk	rSd|_
||_||_n&|dkryd|_
|_|_ndS(NRs8'constraint' and 'index_elements' are mutually exclusiveR
R(R&t
isinstanceRtstring_typesRt
ConstraintRtExcludeConstrainttgetattrt
ValueErrortconstraint_targettinferred_target_elementstinferred_target_whereclausetIndextexpressionstdialect_optionstgetRR(RRRR((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyt__init__�s:			
		
		N(RRR!R&R5(((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyR'�sRcBseZdZRS(R(RRt__visit_name__(((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyR�sRcBs&eZdZdddddd�ZRS(RcCs�tt|�jd|d|d|�|jdkrR|jdkrRtd��nt|t�ry|s�td��q�n*t|t	�r�t|�}ntd��g|j
�D]'\}}tjt
j|�|f^q�|_||_dS(NRRRsVEither constraint or index_elements, but not both, must be specified unless DO NOTHINGs*set parameter dictionary must not be emptysqset parameter must be a non-empty dictionary or a ColumnCollection such as the `.c.` collection of a Table object(tsuperRR5R/R&R.R-R(tdictRtitemsRtexpectRt
DMLColumnRoletupdate_values_to_settupdate_whereclause(RRRRRRtkeytvalue((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyR5�s$	:N(RRR6R&R5(((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyR�sN(RR(tRRtsqlRRRtsql.baseRRRtsql.dmlRtStandardInserttsql.elementsR	tsql.expressionR
tutil.langhelpersRt__all__RR'RR(((sS/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/dml.pyt<module>s$�.