【发布时间】:2021-12-28 07:28:51
【问题描述】:
我有以下代码:
try:
Session = sessionmaker(bind=engine)
session = Session()
newentry = MyTable(
some_data = "some data",
)
session.add(newentry)
session.commit()
except psycopg2.OperationalError as oe:
print("Not possible to connect to DB")
except psycopg2.ProgrammingError as dbex:
print("Table does not exist")
Base.metadata.create_all(engine)
except Exception as ex:
print(ex)
finally:
session.close()
如何正确捕捉psycopg2.errors.UndefinedTable?
psycopg2.ProgrammingError 似乎不起作用,因为在第三次捕获时打印了异常,并且没有创建表。
我也尝试了psycopg2.Error,结果相同。
感谢您的帮助
【问题讨论】:
-
psycopg2.DatabaseError怎么样? -
根据文档:“异常 psycopg2.ProgrammingError 因编程错误引发的异常,例如表未找到或已存在、SQL 语句中的语法错误、指定的参数数量错误等。它是DatabaseError 的子类”。但我会尝试使用 DatabaseError。谢谢
-
其他人可能也有与您相同的问题,所以我想知道:您是否通过 sqlalchemy 构建了会话?该标记看起来像您所做的,但我无法从您的代码示例中看出。
标签: python-3.x sqlalchemy psycopg2