因为我们需要使用不同的urls来访问数据库以供内部和外部使用,所以我实现了以下代码。问题是,引发的OperationalError不是由try/ not子句获取的。为什么不取这个错误?
try:
return create_engine('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
dbname="db_name",
user="username",
host="internal_url.com",
port=1234,
password="PassWord"))
except exc.OperationalError:
return create_engine('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
dbname="db_name",
user="username",
host="external_url.com",
port=1234,
password="PassWord"))发布于 2020-08-06 14:48:52
create_engine只创建实例,但不建立连接。您需要连接到数据库,以验证连接是否有效。就像这样
try:
engine = create_engine('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
dbname="db_name",
user="username",
host="internal_url.com",
port=1234,
password="PassWord"))
engine.connect()
return engine
except sqlalchemy.exc.OperationalError:
return create_engine('postgresql://{user}:{password}@{host}:{port}/{dbname}'.format(
dbname="db_name",
user="username",
host="external_url.com",
port=1234,
password="PassWord"))https://stackoverflow.com/questions/63283246
复制相似问题