Hacked By AnonymousFox

Current Path : /opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/dialects/mysql/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/dialects/mysql/__pycache__/dml.cpython-311.pyc

�

�܋f����ddlmZddlmZddlmZddlmZddlm	Z	ddl
mZddlm
Z
dZGd	�d
e��Ze
edd��ZGd
�de	��ZdS)�)�exc)�util)�_generative)�Insert)�
ClauseElement)�alias)�public_factory)r�insertc�^�eZdZdZed���Zejd���Ze	d���Z
dS)raMySQL-specific implementation of INSERT.

    Adds methods for MySQL-specific syntaxes such as ON DUPLICATE KEY UPDATE.

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

    .. versionadded:: 1.2

    c��|jjS)a�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
        :meth:`_expression.Insert.values` method.

        .. seealso::

            :ref:`mysql_insert_on_duplicate_key_update` - example of how
            to use :attr:`_expression.Insert.inserted`

        )�inserted_alias�columns��selfs �T/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/dialects/mysql/dml.py�insertedzInsert.inserteds��$�"�*�*�c�.�t|jd���S)Nr)�name)r�tablers rr
zInsert.inserted_alias-s���T�Z�j�1�1�1�1rc���|r|rtjd���|r0t|��dkrtjd���|d}n|}t|dd��}t	||��|_|S)aE
        Specifies the ON DUPLICATE KEY UPDATE clause.

        :param \**kw:  Column keys linked to UPDATE values.  The
         values may be any SQL expression or supported literal Python
         values.

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

        :param \*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 :class:`_expression.Update`
         construct overall
         in :ref:`updates_order_parameters`::

            insert().on_duplicate_key_update(
                [("name", "some name"), ("value", "some value")])

         .. versionchanged:: 1.3 parameters can be specified as a dictionary
            or list of 2-tuples; the latter form provides for parameter
            ordering.


        .. versionadded:: 1.2

        .. seealso::

            :ref:`mysql_insert_on_duplicate_key_update`

        z9Can't pass kwargs and positional arguments simultaneously�zDOnly a single dictionary or list of tuples is accepted positionally.�r
N)r�
ArgumentError�len�getattr�OnDuplicateClause�_post_values_clause)r�args�kw�valuesr
s     r�on_duplicate_key_updatezInsert.on_duplicate_key_update1s���Z�	�B�	��#�K���
��	��4�y�y�1�}�}��'�0�����!�W�F�F��F� ��'7��>�>��#4�^�V�#L�#L�� ��rN)�__name__�
__module__�__qualname__�__doc__�propertyrr�memoized_propertyr
rr"�rrrr
ss������	�	��+�+��X�+�&
��2�2���2��=�=��[�=�=�=rrz.dialects.mysql.insertz.dialects.mysql.Insertc��eZdZdZdZd�ZdS)rr"Nc��||_t|t��r=|r;t|dt��r d�|D��|_t|��}|rt|t
��st
d���||_dS)Nrc��g|]\}}|��Sr)r))�.0�key�values   r�
<listcomp>z.OnDuplicateClause.__init__.<locals>.<listcomp>�s��'E�'E�'E�
��U��'E�'E�'Erz/update parameter must be a non-empty dictionary)r
�
isinstance�list�tuple�_parameter_ordering�dict�
ValueError�update)rr
r7s   r�__init__zOnDuplicateClause.__init__|s���,����f�d�#�#�	"��	"�!�&��)�U�3�3�	"�(F�'E�f�'E�'E�'E�D�$��&�\�\�F��	P�Z���5�5�	P��N�O�O�O�����r)r#r$r%�__visit_name__r4r8r)rrrrws.������.�N�������rrN)�rr�sql.baser�sql.dmlr�StandardInsert�sql.elementsr�sql.expressionr�util.langhelpersr	�__all__r
rr)rr�<module>rBs
��������������#�#�#�#�#�#�/�/�/�/�/�/�)�)�)�)�)�)�#�#�#�#�#�#�.�.�.�.�.�.���b�b�b�b�b�^�b�b�b�J
��
�$�&>�
�
��
�����
�����r

Hacked By AnonymousFox1.0, Coded By AnonymousFox