无法在托管服务 pythonanywhere 上打开数据库文件
unable to open database file on a hosting service pythonanywhere
我想在 pythonanywhere 上部署我的项目。 Error.log 表示服务器或机器无法打开我的数据库。在我的本地机器上一切正常。我从 YouTube 观看了 Pretty Printed 的视频
这是我在 app.py 中的初始化方式。这是我从 error.log
那里得到的
db_session.global_init("db/data.sqlite")
db_session中的这个:
def global_init(db_file):
global __factory
if __factory:
return
if not db_file or not db_file.strip():
raise Exception("Необходимо указать файл базы данных.")
conn_str = f'sqlite:///{db_file.strip()}?check_same_thread=False'
print(f"Подключение к базе данных по адресу {conn_str}")
engine = sa.create_engine(conn_str, echo=False)
__factory = orm.sessionmaker(bind=engine)
from . import __all_models
SqlAlchemyBase.metadata.create_all(engine)
def create_session() -> Session:
global __factory
return __factory()
最后一件事是我的 wsgi.py:
import sys
path = '/home/r1chter/Chicken-beta'
if path not in sys.path:
sys.path.append(path)
import os
from dotenv import load_dotenv
project_folder = os.path.expanduser(path)
load_dotenv(os.path.join(project_folder, '.env'))
import app # noqa
application = app.app()
通常 PythonAnywhere 上的此类错误是由于提供了相对路径而不是绝对路径。
我想在 pythonanywhere 上部署我的项目。 Error.log 表示服务器或机器无法打开我的数据库。在我的本地机器上一切正常。我从 YouTube 观看了 Pretty Printed 的视频
这是我在 app.py 中的初始化方式。这是我从 error.log
那里得到的db_session.global_init("db/data.sqlite")
db_session中的这个:
def global_init(db_file):
global __factory
if __factory:
return
if not db_file or not db_file.strip():
raise Exception("Необходимо указать файл базы данных.")
conn_str = f'sqlite:///{db_file.strip()}?check_same_thread=False'
print(f"Подключение к базе данных по адресу {conn_str}")
engine = sa.create_engine(conn_str, echo=False)
__factory = orm.sessionmaker(bind=engine)
from . import __all_models
SqlAlchemyBase.metadata.create_all(engine)
def create_session() -> Session:
global __factory
return __factory()
最后一件事是我的 wsgi.py:
import sys
path = '/home/r1chter/Chicken-beta'
if path not in sys.path:
sys.path.append(path)
import os
from dotenv import load_dotenv
project_folder = os.path.expanduser(path)
load_dotenv(os.path.join(project_folder, '.env'))
import app # noqa
application = app.app()
通常 PythonAnywhere 上的此类错误是由于提供了相对路径而不是绝对路径。