小编BHC*_*BHC的帖子

相当于 ON CONFLICT DO NOTHING for UPDATE postgres

如果更新的版本不会违反主键约束,我想更新我的 postgres 数据库中的行。如果可以,我想保持原样。

假设表有主键col1, col2, col3,如果我运行这样的查询:

UPDATE table SET (col1, col2) = ('A', 'B') 
      WHERE col1='D' AND col2='E';
Run Code Online (Sandbox Code Playgroud)

查询将失败,如果存在两个条目,我将收到重复键错误:

'A', 'B', 'C'
'D', 'E', 'C'
Run Code Online (Sandbox Code Playgroud)

col3在现有行和要更新的行之间是相同的。

如果我正在INSERT使用我会使用的行,ON CONFLICT DO NOTHING但我找不到它的实现UPDATE。是否存在等价物?

sql postgresql where-clause sql-update sql-insert

17
推荐指数
2
解决办法
2万
查看次数

内部产量与块保持开放postgres连接

yield从下面的发生器进入时,postgres连接是否保持活动状态,或者是否yield需要减少缩进,以便在每个连接器上建立新的连接next()

def getData(start, end):
    with psycopg2.connect("dbname='test' user='user' host='localhost' password='password'") as conn:
        time = start
        while time<end:
            with conn.cursor() as cur:
                cur.execute(query.format(start, time))
                data = cur.fetchall()
            time += one_week
            yield data
Run Code Online (Sandbox Code Playgroud)

python psycopg2 generator

2
推荐指数
1
解决办法
48
查看次数