2017-02-21 98 views
0

我的疑問是非常SQLish但aiopg/psycopg2自動提交和交易

由於psycopg2異步連接是自動提交,我手動設置定義的事務,然後在相同的光標/連接關閉。

這樣的:

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;') 

我懷疑是因爲它完全地同步的,如果有一個回退將已在同一時間跨度被處理其他的命令也rolledback或將你回滾的基於連接的?

謝謝!

回答

1

回滾是基於連接的。

+0

感謝piro,我結束了使用asyncpg,因爲內置事務我覺得比手動創建它們更安全。 – monobot