gpt4 book ai didi

python - 识别 sqlalchemy.exc.OperationalError

转载 作者:太空狗 更新时间:2023-10-29 21:57:43 27 4
gpt4 key购买 nike

我正在 try catch mysql/sqlalchemy OperationalErrors 并替换 handle access denied (1045) 与 connection refused (2003) 不同

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user … (Background on this error at: http://sqlalche.me/e/e3q8)
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)") (Background on this error at: http://sqlalche.me/e/e3q8)

我似乎找不到任何关于如何以编程方式区分它们的文档。我深入研究了源代码并认为我可以检查 err.orig.original_exception.errno 的值,但事实并非如此。

编辑:err.orig 似乎没有被定义为拒绝访问,这可能是一个错误。

try:
engine.scalar(select([1]))
except sqlalchemy.exc.OperationalError as err:
if err_______:
print("Access Denied")
elifif err_______:
print("Connection Refused")
else:
raise

这个问题真的很困扰我,连赏金都快用完了,还没有消息。我开始相信它一定是 sqlalchemy 中的一个错误,但是 sqlalchemy 文档在这方面的描述不是很清楚,而且我一般都是 sqlalchemy 和 python 的新手,所以我真的很难说。我在 irc 上也找不到支持,我该从哪里去?

最佳答案

经过进一步研究,我发现mysql错误代码在err.orig.args[0]中。所以答案是:

try:
engine.scalar(select([1]))
except sqlalchemy.exc.OperationalError as err:
if err.orig.args[0]==1045:
print("Access Denied")
elif err.orig.args[0]==2003:
print("Connection Refused")
else:
raise

关于python - 识别 sqlalchemy.exc.OperationalError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54101379/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com