我将 sqlite3 ( import sqlite3 ) 与 python 一起使用,但我无法将 db 文件保存在磁盘上(在我的例子中,在 heroku 上,在/app/内)。当我运行这个时没有错误:c = sqlite3.connect(':memory:') c.execute('CREATE TABLE users (userid int, isbot boolean);') c.execute("INSERT INTO users VALUES (000000000, 'test');") c.commit() c2 = sqlite3.connect('/app/bot.db') with c2: for line in c.iterdump(): if line not in ('BEGIN;', 'COMMIT;'): # let python handle the transactions c2.execute(line) c2.commit()
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
我不相信 heroku 支持这种类型的文件
在他们的网站上找到了这个。
磁盘备份存储 SQLite 在内存中运行,并将其数据存储在磁盘上的文件中。虽然此策略适用于开发,但 Heroku 的 Cedar 堆栈具有临时文件系统。您可以写入,也可以从中读取,但内容会定期清除。如果你在 Heroku 上使用 SQLite,你将至少每 24 小时丢失一次整个数据库。
即使 Heroku 的磁盘是持久的,运行 SQLite 仍然不是一个好的选择。由于 SQLite 不作为服务运行,每个 dyno 将运行一个单独的运行副本。这些副本中的每一个都需要自己的磁盘备份存储。这意味着为您的应用程序提供动力的每个测力计都会有一组不同的数据,因为磁盘不同步。
您可以将您的应用程序配置为在 Postgres 上运行,而不是在 Heroku 上使用 SQLite。
添加回答
举报
0/150
提交
取消