【发布时间】:2014-07-02 16:51:11
【问题描述】:
我有一个 python 程序,它可以调用我使用 pyinstaller 构建到 exe 中的 mysql 调用。 使用 pyinstaller 编译 --onefile 或 --onedir 会出现以下问题。
我已经能够使用 mysqldb 或 mysql.connector 成功连接并进行查询。
这里是mysqldb的连接逻辑:
# from http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
try:
db = MySQLdb.connect(host=hostname,user=username,passwd=password)
except MySQLdb.Error as e:
reply = QtGui.QMessageBox.critical(self, "Error",str(e.args[1]))
return
这里是mysql.connector的连接逻辑:
# http://dev.mysql.com/
try:
db = mysql.connector.connect(host=hostname,user=username,password=password)
except mysql.connector.Error as e:
reply = QtGui.QMessageBox.critical(self, "Error",str(e.msg))
return
如果我提供了错误的主机地址,那么在两个连接调用期间都会抛出“except”,并且错误消息会被捕获并显示。这适用于两个连接器之前我用 pyinstaller 编译。
但是,mysql.connector “except”不会出现在我的程序的编译版本中。 “except”确实对 mysqldb connect 调用正常工作并出现错误消息。
这使我得出结论 mysql.connector 有一个错误。其他人可以确认这一点还是我做错了什么?
【问题讨论】:
-
(删除了之前的评论)你能在 try/except 中添加一个“catch-all”来查看真正发生的异常吗?
-
我尝试了一个通用的 except:,但在那种情况下也没有发现任何东西
-
它只是简单地尝试,但从未发生过。令人惊讶的是,try/except 之后的代码也从未出现过。它似乎卡在了尝试中。
-
connection_timeout = 2 .. 也许解决起来很糟糕。
-
但是我使用mysqldb和pyinstaller时没有卡住,作为脚本运行时也没有卡住mysql.connector或mysqldb。我确信我的代码没问题。只有2个可能的原因。 1. pyinstaller 无法正确处理 mysql.connector 或 2. mysql.connector 有错误。我不知道是哪个。
标签: python mysql mysql-python mysql-connector pyinstaller