관리-도구
편집 파일: dml.cpython-38.pyc
U -?�f� � @ s< d dl mZ d dlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd l m Z dd lmZ ddlm Z ddlmZ dd lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dZddd�dd�Z G dd� de�ZG dd� de�Z!G dd � d e!�Z"G d!d"� d"e!�Z#d#S )$� )�annotations)�Any� )�_OnConflictIndexElementsT)�_OnConflictIndexWhereT)�_OnConflictSetT)�_OnConflictWhereT� )�util)� coercions)�roles)�_DMLTableArgument)�_exclusive_against)�_generative)�ColumnCollection)�ReadOnlyColumnCollection��Insert)� ClauseElement)�KeyedColumnElement)�alias)�Self)r �insertr r )�table�returnc C s t | �S )aW Construct 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 )r � r �N/opt/hc_python/lib64/python3.8/site-packages/sqlalchemy/dialects/sqlite/dml.pyr s r c @ sx e Zd ZdZdZdZejdd�dd��Ze ddd id �Z ee ddd dddd�dd���Zee ddd dd�dd���Z dS )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` �sqliteFz6ReadOnlyColumnCollection[str, KeyedColumnElement[Any]])r c C s t | 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)�selfr r r r G s zInsert.excluded�_post_values_clausezCThis Insert construct already has an ON CONFLICT clause established)ZmsgsNr r r r r )�index_elements�index_where�set_�wherer c C s t ||||�| _| 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"