【发布时间】:2020-10-24 18:11:16
【问题描述】:
我制作了一个简单的 CRUD 数据库程序,就像一个非常简单的库存系统。它能够通过对 SQLite3 数据库进行查询来从数据库中读取、更新数据库、从数据库中删除内容等。现在,我想让它可执行,以便我可以将它分享给用户,让他们试用该程序。
到现在为止,我已经用这样的代码尝试了 pyinstaller:
pyinstaller --onefile --add-data "database.db:." inventory.py
它成功编译了程序。但是,当我执行可执行文件时,终端出现sqlite3.OperationalError: no such table: items_list 的错误,并立即关闭程序。
这是我连接到 sqlite3 数据库的程序中的代码:
db = sqlite3.connect('database.db')
cursor = db.cursor()
为了在树视图中显示项目,我使用了:
def update(rows):
tree.delete(*tree.get_children())
for i in rows:
tree.insert('', 'end', value=i)
...
query = 'SELECT ItemName, CardNo, StockCount FROM items_list'
cursor.execute(query)
rows = cursor.fetchall()
update(rows)
有没有一种方法可以将 .py 文件与 .db 文件结合起来制作一个可执行的单个程序?非常感谢您的帮助!
【问题讨论】:
-
不确定是否要将数据库嵌入 .exe:不会保存任何更改。每次您要运行 exe 时,它都会从构建 exe 时拥有的相同数据库数据开始
-
@EricMathieu hmmm 那么如果我想让程序能够连接到 sqlite3 数据库应该怎么做呢?
-
我对 sqlite3 数据库一无所知,但我可以告诉你,没有什么能阻止你访问没有嵌入 exe 的数据库
-
@EricMathieu 问题是我很困惑,因为连接没有错误,但是当 .exe 运行 sqlite 的查询时,它没有正确读取它(sqlite3.OperationalError:没有这样的表:items_list) .我已经尝试通过互联网并没有找到任何解决方案。
标签: python sqlite tkinter pyinstaller