如何让搭载MariaDB的Tkinter Python应用无需预装数据库即可在其他电脑运行
Python搭配MariaDB桌面应用无安装运行解决方案
核心最优方案:替换服务型数据库MariaDB为嵌入式SQLite数据库
该方案完全不需要在目标设备安装任何数据库服务,所有数据存储在单个独立数据库文件中,可直接和代码一起打包为单EXE文件,适配Win10/Linux双环境,改造成本最低。
具体操作步骤
- 步骤1:迁移现有MariaDB数据到SQLite
先将MariaDB中存储的燃油舱容表等所有业务数据导出为CSV或者通用SQL脚本,新建一个SQLite数据库文件(命名示例:fuel_data.db),将导出的数据导入该文件即可。 - 步骤2:替换代码中的数据库依赖
删除原有mariadb相关导入,改用Python内置标准库sqlite3,无需额外安装依赖:
增删改查的游标操作、SQL语法95%以上和原有MariaDB兼容,仅需调整少量特殊语法(如自增字段、日期函数等小差异)即可正常运行。# 替换原有 import mariadb 为以下内容 import sqlite3 # 数据库连接代码同步修改,原有mariadb连接的账号/主机/端口配置全部删除,直接关联本地db文件路径即可 conn = sqlite3.connect('fuel_data.db') cursor = conn.cursor() - 步骤3:打包为Windows可运行EXE
使用PyInstaller完成打包,操作命令如下:
打包完成后,生成的EXE文件存放在dist目录下,直接拷贝到Win10设备双击即可运行,不需要预装任何环境和数据库。# 先安装PyInstaller:pip install pyinstaller # Windows环境下打包命令 pyinstaller --onefile --windowed --add-data "fuel_data.db;." --add-data "insert_in_db.py;." --add-data "db_commands_calc.py;." 你的主脚本文件名.py
注意事项
如果你的应用需要支持修改、新增数据库内容,建议不要把db文件打包进EXE内部,改为第一次运行时自动将初始db文件释放到EXE同级目录,后续修改的数据可以持久化保存,避免重启应用后数据丢失。
备选方案(不替换MariaDB的情况)
如果不想修改现有代码,可将MariaDB便携版和脚本一起打包,启动应用时自动拉起临时MariaDB服务,退出时自动关闭服务。该方案改造成本低,但打包后体积大、启动速度慢,且容易出现Win10权限拦截问题,优先级低于SQLite替换方案。
内容的提问来源于stack exchange,提问作者Neo Matrix
相关产品推荐
相关产品推荐

