我將 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
提交
取消