我在https://www.pythonanywhere.com上使用flask和sqlite3。在我自己的机器中,当我测试应用程序时,我不需要指定数据库的目录,例如db = sqlite3.connect("database.db")
,它完美地工作。在pythonanywhere上,我需要将其更改为db = sqlite3.connect("/path/to/database.db")
,因为当我不更改时,我会收到此错误:
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
在/var/log/<application>.pythonanywhere.com.error.log
中,我得到:
OperationalError: no such table: <table-name>
我在pythonanywhere的主文件夹中找到了一个空的database.db
(这意味着应用程序创建了它,对吗?)我创建的database.db
是在项目文件夹中
有没有办法指定目录,以便它在我的机器和pythonanywhere上完美地工作而不改变路径?
答案 0 :(得分:7)
在db
文件中,请尝试以下方式:
from os import path
ROOT = path.dirname(path.realpath(__file__))
...
db = sqlite3.connect(path.join(ROOT, "database.db"))
...
ROOT
总是指向包含db
的文件目录,而不是直接指出路径,那么您应该为数据库找到正确的位置。