Как подключить docker том «database / app.db» к SQLAlchemy? - PullRequest
0 голосов
/ 08 апреля 2020

Я использую Python 3.8.1 Flask latest и приложение работает нормально, но не может подключить том docker из SQLAlchemy, и если база данных не существует, она должна создать базу данных, но я не могу подключить свой общий 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)

1 Ответ

0 голосов
/ 08 апреля 2020

Это не похоже на проблему с томом Docker, похоже, вы пытаетесь получить доступ к базе данных, используя путь в качестве URI вместо: sqlite:////path/to/db.db

См .: https://docs.sqlalchemy.org/en/13/core/engines.html#database -рлов

Специально для sqlite: https://docs.sqlalchemy.org/en/13/core/engines.html#sqlite

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...