0

MVC構造のQuartアプリケーションにFlask-SqlAlchemyを実装しようとしています。だから私はすべてのモデルがそのファイルと機能を持っていることを望みます.

これは私のファイルです:
app.py

__package__ = 'nini'

from .setups import create_app
from .db import db

if __name__ == '__main__':
    app = create_app()
    db.init_app(app)

    app.run(host='127.0.0.1', debug=True)

db.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

tests.pyモデルファイル

from nini.db import db
import datetime


class Test(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.VARCHAR)
    created = db.Column(db.DATETIME, default=datetime.datetime.now())
    pass

    def __init__(self, text):
        self.text = text

    def __repr__(self):
        return '<Test %r>' % self.id, self.created

    @classmethod
    async def create_new(cls, **kw):
        obj = cls(**kw)
        db.session.add(obj)
        db.session.commit()
        pass

test.py

import logging

from quart import jsonify, app, current_app
from quart_openapi import PintBlueprint
from datetime import datetime

from nini.models import tests
from nini.db import db

results = PintBlueprint('test', __name__)


@results.route('/test/test')
async def get_tests():
    logging.error("HELLO")
    t = await tests.Test.create_new(text="TT")
    logging.error("Done")
    return jsonify(t), 200

pathを実行する/test/testと、 `db.session.add(obj)1 行まで正常に動作します。次に、次のエラーが表示されます。

RuntimeError: アプリケーションが見つかりません。ビュー関数内で作業するか、アプリケーション コンテキストをプッシュします。http://flask-sqlalchemy.pocoo.org/contexts/を参照して ください。INFO:quart.serving:127.0.0.1:50537 GET /テスト/テスト 1.1 500 - 21836

このコードを次の場所に追加してみましたapp.py:

db.init_app(app) ### This line was already in my code
with app.app_context():
        db.create_all()

これも好きです:

db.init_app(app) ### This line was already in my code
app.app_context().push():
db.create_all()

私もコンテキストで実行create_newしてみました。内部にテストモデルをtasts.py実装してみましたcreate_alldb.py

基本的に、db.init_app(app)使用するたびにdbエラーが発生します。

助けていただければ幸いです。

4

0 に答える 0