aiopg/psycopg2 自动提交和事务
aiopg/psycopg2 autocommit and transactions
我的疑问很 SQLish 但是
由于 psycopg2 异步连接是自动提交的,我手动设置定义的事务然后在相同的 cursor/connection.
中关闭
像这样:
async def transaction(self, queries):
async with aiopg.create_pool(connection) as pool:
async with pool.acquire() as conn:
async with conn.cursor() as cur:
await cur.execute('BEGIN transaction;')
for query in queries:
await cur.execute(query)
await cur.execute('COMMIT transaction;')
我的疑问是,由于它是完全异步的,如果有回滚,在同一时间跨度内处理的其他命令是否也会回滚,或者你会根据连接回滚吗?
谢谢!!
回滚是基于连接的。
我的疑问很 SQLish 但是
由于 psycopg2 异步连接是自动提交的,我手动设置定义的事务然后在相同的 cursor/connection.
中关闭像这样:
async def transaction(self, queries):
async with aiopg.create_pool(connection) as pool:
async with pool.acquire() as conn:
async with conn.cursor() as cur:
await cur.execute('BEGIN transaction;')
for query in queries:
await cur.execute(query)
await cur.execute('COMMIT transaction;')
我的疑问是,由于它是完全异步的,如果有回滚,在同一时间跨度内处理的其他命令是否也会回滚,或者你会根据连接回滚吗?
谢谢!!
回滚是基于连接的。