【发布时间】:2020-07-21 04:46:07
【问题描述】:
我正在使用 Python 3.8.1 Flask latest 并且应用程序运行良好,但无法从 SQLAlchemy 连接 docker 卷,如果数据库不存在,它应该创建数据库,但我无法将我的共享 docker 卷连接到我的Python Flask应用程序。
Config.py 文件:
import os
basedir = os.path.abspath(os.path.dirname(__file__))
DATA_PATH = "/database"
if os.path.exists(DATA_PATH) == False:
os.mkdir(DATA_PATH)
class Config(object):
# set a proper secret key here or is the .flaskenv file
SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
SQLALCHEMY_DATABASE_URI = 'sqlite://database/app.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
init.py 文件:
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
app = Flask(__name__, static_url_path='', static_folder='static')
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = 'login'
from app import routes, models
Docker 运行:
docker run -p 8080:8080 -it --name abc -v localdb:/database --rm abc:v1
错误 1:
xc.ArgumentError(
sqlalchemy.exc.ArgumentError: Invalid SQLite URL:
sqlite://database//app/app/app.db
Valid SQLite URL forms are:
sqlite:///:memory: (or, sqlite://)
sqlite:///relative/path/to/file.db
sqlite:////absolute/path/to/file.db
错误 2:
对于SQLALCHEMY_DATABASE_URI = 'sqlite:///database/app.db'
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: http://sqlalche.me/e/e3q8)
【问题讨论】:
标签: python docker sqlalchemy flask-sqlalchemy docker-volume