使用SQLite数据库从.py构建.exe文件

时间:2017-10-30 11:14:43

标签: python sqlite exe cx-freeze

程序进行约会并将它们放入计划中,这些计划是用QsQLite数据库编写的。该程序从.py运行,但我需要它在.exe中。 我使用cx_Freeze创建.exe文件,但该程序不生成SQLite数据库。 所以这是我的设置文件:

from cx_Freeze import setup, Executable
import os
import sys

os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python35\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python35\tcl\tk8.6'


build_exe_options = {"packages": [
  'os','sys','sqlite3'], 'include_files': [os.path.join(sys.base_prefix, 'DLLs', 'sqlite3.dll'), 'main.py','util.py','data.db']}

setup(
    name = "Eclients",
    version = "0.1",
    options = {"build_exe": build_exe_options},
    executables = [Executable("main.py")]
)

但数据库无法打开

那么,它如何解决?

2 个答案:

答案 0 :(得分:1)

您未在include_files语句中包含SQLite数据库文件。请参阅文档:http://cx-freeze.readthedocs.io/en/latest/faq.html#using-data-files

然而,更好的解决方案是提供在需要时创建缺少的数据库文件的选项。这样就可以在脚本中定义数据库的SCHEMA,并与程序逻辑保持一致。如果需要填充数据,这可能是一个不太理想的解决方案。

答案 1 :(得分:0)

通过将整个'sqldrivers'文件夹从C:\Program Files\Python35\Lib\site-packages\PyQt5\plugins复制到main.exe目录来解决此问题。