舍得按:这个问题困住舍得蛮长的一段时间了。在用cx-freeze对写完的程序进行编译的时候,舍得发现,程序居然无法正常打开数据库!直到今晚,按脑中突然冒出的一个念头试了一下,发现解决问题的方法竟然是如此滴简单。

先介绍一下问题的背景:在舍得写的这个程序中要用到Qt自带的MySQL驱动,在本地调试的时候,一切正常,数据可以随心所欲滴读取、写入。可一旦用cx-freeze对程序进行编译后,杯具发生,数据库就再也打不开了。

难道是cx-freeze出了错?

还是,根本没法酱紫调用数据库?那写好的程序只能带着Python的环境运行了?

舍得有一个优点是会去想各种各样的“可能”的解决办法,然后一一尝试。哪怕可能性很低很低,只要尝试的成本没有超出舍得的忍耐程度,那——还是会去试。

就这样一个个方案试过去,直到找到答案:

你要调用哪个数据库的驱动,先在程序目录下新建一个叫”sqldrivers“的文件夹,然后把那个驱动(通常放在"Python安装目录\Lib\site-packages\PyQt4\plugins\sqldrivers下,例如舍得要用到MySQL的驱动,就复制qsqlmysql4.dll")复制过来,放到这个文件夹下。然后就没有然后了,直接运行编译好的程序,你会发现数据库正常了。

 

本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
作者:
舍得
首发:舍得@学习力博客