Flask - Как импортировать db = SQLAlchemy в отдельный файл - PullRequest
0 голосов
/ 07 июля 2019

Я хочу добавить новую таблицу или добавить данные, позвонив по номеру db, но у меня возникла проблема при попытке импортировать db

db вернуть вот так <SQLAlchemy engine=None>

что означает, что я уже не делал это db.init_app(app)

это мой архивный файл

Root
run.py
------>server/__init__.py

Config.py

import os


class Config:
    SECRET_KEY = os.environ.get('SECRET_KEY')
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@localhost/flask_py'
    MAIL_SERVER = 'smtp.googlemail.com'
    MAIL_PORT = 587
    MAIL_USE_TLS = True
    MAIL_USERNAME = os.environ.get('EMAIL_USER')
    MAIL_PASSWORD = os.environ.get('EMAIL_PASS')

Run.py

from server import server_app, db
app = server_app()
if __name__ == '__main__':
    app.run(debug=True)

__ __ INIT. Ру

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from server.config import Config

db = SQLAlchemy()


    def server_app(config_class=Config):
        app = Flask(__name__)
        app.config.from_object(Config)
        db.init_app(app)
        from server.users.routes import users
        app.register_blueprint(users)
        return app

в моей командной строке, используя Windows, я хочу импортировать БД, я пытаюсь так:

D:\PYTHON\root>python
from run import db
db.create_all() 

но когда я проверяю это:

<SQLAlchemy engine=None>

1 Ответ

1 голос
/ 07 июля 2019

У меня есть полное рабочее решение, очень похожее на то, что вы делаете.Проверьте мой макет, а затем посмотрите на create_db.py.

https://github.com/researcher2/stackoverflow_56885380

В вашем случае «server_app» не выполняется в вашей интерактивной оболочке.Предполагая, что вы запускаете интерактивную оболочку в корневом каталоге, вам нужно сделать следующее:

from server import db, create_app

app = server_app()    
with app.app_context():
    db.create_all()

Раздражающая вещь о flask-sqlalchemy, в отличие от простой sqlalchemy, заключается в том, что db связан с приложением фляги.Конфигурация db происходит из конфига колбы, и инициация выполняется во время db_init или просто SqlAlchemy (db), если вы хотите более простую версию для настройки одного приложения.

Ваши модели также должны быть настроены правильно.В моем примере выше я только что использовал их в скрипте create_db.

Этот пост может также помочь вам в отношении фабрик и чертежей.Я создал вышеупомянутый github, чтобы ответить на него.

Отражение различных баз данных в заводских настройках Flask

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