Python-Flask - 如何在不指定其目录的情况下访问 pythonanywhere.com 上的 sqlite database.db?
Python-Flask - How to access sqlite database.db on pythonanywhere.com without specifying its directory?
我在 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 上都能完美运行?
在你的 db
文件中,试试这个方法:
from os import path
ROOT = path.dirname(path.realpath(__file__))
...
db = sqlite3.connect(path.join(ROOT, "database.db"))
...
ROOT
不是直接指出路径,而是始终指向包含 db
的文件的目录,然后您应该获得数据库的正确位置。
我在 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 上都能完美运行?
在你的 db
文件中,试试这个方法:
from os import path
ROOT = path.dirname(path.realpath(__file__))
...
db = sqlite3.connect(path.join(ROOT, "database.db"))
...
ROOT
不是直接指出路径,而是始终指向包含 db
的文件的目录,然后您应该获得数据库的正确位置。