为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 sqlite3 将数据库保存在磁盘上 - Python

无法使用 sqlite3 将数据库保存在磁盘上 - Python

繁星淼淼 2023-05-16 14:21:36
我将 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。


查看完整回答
反对 回复 2023-05-16
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信