Это ортагональные вещи:
acquire()
позволяет достать соединение из пула.
transaction()
используется для обертки и выполнения нескольких запросов как единое целое (обратите внимание на использование внутри context-manager).
Если возникает ошибка посередине транзакции, то к предыдущим командам применяется rollback и никаких изменений не происходит по итогу.
Если нужно выполнять команды по одной, достаточно использовать connection из `pool.acquire`.
При этом `transaction` можно вызывать из `connection`:
async with pool.acquire() as connection:
async with connection.transaction():
# Write operation
await connection.execute('INSERT INTO mytable (col1) VALUES ($1)', 123)
# Read operation
result = await connection.fetch('SELECT * FROM mytable WHERE col1 = $1', 123)