如何使用 AsyncPG 捕获 SQL 错误?

How to catch SQL errors with AsyncPG?

我很难找到有关如何在 AsyncPG 中处理错误的示例。 我正在执行此查询:

await pg_con.execute("UPDATE users set x = , y =  WHERE z = ", x, y, z)

我希望能够捕获任何 SQL 错误,例如记录不存在。我该怎么做?

asyncpg 有包含所有可能异常的模块异常。您可以捕获特定错误,例如:

import asyncpg
try:
    await pg_con.execute("UPDATE users set x = , y =  WHERE z = ", x, y, z)
except asyncpg.ForeignKeyViolationError as e:
    print('error occurred', e)

或者只是捕捉 asyncpg.PostgresError 甚至 Exception。 此外,有时很容易在 python 解释器中检查异常详细信息:

try:
    await pg_con.execute(query)
except Exception as e:
    breakpoint()  # then use e.__class__, e.args, dir(e), etc