小编7wo*_*ers的帖子

Postgresql - 使用来自SELECT的sqlalchemy的INSERT插入到不存在的地方

正如在指出的那样,可以使用postgresql 9.1+进行以下操作

INSERT INTO example_table
    (id, name)
SELECT 1, 'John'
WHERE
    NOT EXISTS (
        SELECT id FROM example_table WHERE id = 1
    );
Run Code Online (Sandbox Code Playgroud)

我一直在玩sqlalchemy的0.9版本,他们从SELECT方法引入了INSERT,理论上应该处理上述问题.

有可能,如果可能,怎么样?(因为我想利用在使用原始sql时不返回的result.inserted_primary_key)

我如何使用bindparams作为'from_select'部分,因为我可以使用它的唯一方法是在select中使用表列.

例如

insrt = example_table.insert().
    from_select(['id', 'name'],
    example_table.select().
    where(~exists(select([example_table.c.id],
    example_table.c.id == 1))))

result = session.execute(insrt)

if result.is_insert:
    print 'do something with result.inserted_primary_key'
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy insert-update

9
推荐指数
1
解决办法
5073
查看次数

标签 统计

insert-update ×1

postgresql ×1

python ×1

sqlalchemy ×1