Python-Flask - 如何在pythonanywhere.com上访问sqlite database.db而不指定其目录?

Aus*_*ial 4 python database sqlite flask pythonanywhere

我在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.
Run Code Online (Sandbox Code Playgroud)

/var/log/<application>.pythonanywhere.com.error.log,我得到:

OperationalError: no such table: <table-name>
Run Code Online (Sandbox Code Playgroud)

database.db在pythonanywhere的主文件夹中找到一个空(这意味着应用程序创建它,对吧?)database.db我创建的是在projects文件夹中

有没有办法指定目录,以便它在我的机器和pythonanywhere上完美地工作而不改变路径?

lor*_*. j 7

在您的db文件中,尝试这种方式:

from os import path

ROOT = path.dirname(path.realpath(__file__))

...
db = sqlite3.connect(path.join(ROOT, "database.db"))
...
Run Code Online (Sandbox Code Playgroud)

不是直接指出路径,而是ROOT始终指向包含该文件的文件的目录db,那么您应该为数据库获取正确的位置.