Esempio n. 1
0
def _visit_insert_from_select(element: _InsertFromSelect, compiler: PGCompiler_psycopg2, **kw):
    return "INSERT INTO %s (%s) %s %s" % (
        compiler.process(element.table_clause, asfrom=True),
        ', '.join(element.table_clause.columns.keys()),
        compiler.process(element.select),
        _get_conflict_action(element.table, True)
    )
Esempio n. 2
0
def on_conflict(elem: OnConflictInsert, compiler: PGCompiler_psycopg2, **kw):
    query_string = compiler.visit_insert(elem.insert, **kw)  # type: str
    action = 'ON CONFLICT %s DO NOTHING'
    if elem.indexes:
        fields = '(%s)' % ', '.join(elem.indexes)
        action = action % fields
    else:
        action = action % ''
    return '%s %s' % (query_string, action)
Esempio n. 3
0
def _append_string(insert_expr: Insert, compiler: PGCompiler_psycopg2, **kw):
    """
    Works only with inline insert
    :param insert_expr:
    :param compiler:
    :param kw:
    :return:
    """
    query_string = compiler.visit_insert(insert_expr, **kw)
    if 'append_string' in insert_expr.kwargs:
        return query_string + " " + insert_expr.kwargs['append_string']
    return query_string