带db模型的循环导入的flask sqlalchemy

Arsalan Ahmad Ishaq
backend
├── erp
│   ├── blueprint_create_order_and_add_products
│   │   ├── __init__.py
│   │   └── resources
│   │       ├── create_order.py
│   │       ├── __init__.py
│   ├── blueprint_general_query
│   │   ├── __init__.py
│   │   └── resources
│   │       ├── general_query.py
│   │       └── __init__.py
│   ├── common
│   │   ├── __init__.py
│   │   └── models
│   │       ├── brand.py
│   │       ├── productwithspecs.py
│   ├── database_collection
│   │   ├── finance.db
│   │   ├── orders.db
│   │   └── vendors.db
│   └── __init__.py
├── __init__.py
└── run.py

上面是我的应用程序结构,其中的models文件夹具有db类,问题在于brand模块中的类涉及(通过关系)并在productwithspecs模块中导入了该类,并且有很多相关的db类。如何在不循环导入的情况下将它们导入烧瓶的CRUD资源中。

app.py的结构为:

from erp import app

if __name__ == '__main__':
    app.run(debug=True)

erp / ini .py的代码是:

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
app = Flask(__name__)

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////tmp/test.db"

db = SQLAlchemy(app)
ma = Marshmallow(app)

from erp.blueprint_create_order_and_add_products import bp as bp1 # api_createorders_addproducts

# REGISTER blueprint apis to app
app.register_blueprint(bp1)

请让我知道如何避免循环导入,因为我将需要将db类导入到蓝图的资源文件夹中,例如create_order模块等。

above_c_level

您应该使用Application Factory App。您可以在这里找到官方推荐,这是一个很好的教程

重构后,erp / __ init__.py应该类似于:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
app = Flask(__name__)

db = SQLAlchemy(app)
ma = Marshmallow(app)

def create_app():
    db.init_app(app)
    app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////tmp/test.db"
    ma.init_app(app)

    with app.app_context():
        # Include your routes here

        app.register_blueprint(erp.blueprint_create_order_and_add_products.bp)

    return app

您的app.py

from erp import create_app

app = create_app()

if __name__ == '__main__':
    app.run(debug=True)

从所有其他模块中,您可以像这样导入:

from erp import app, db

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQLAlchemy模型循环导入

来自分类Dev

flask-sqlalchemy:导入模型出错

来自分类Dev

带Flask的SQLAlchemy不提交

来自分类Dev

从flask_sqlalchemy导入UniqueConstraint

来自分类Dev

db无法在html中循环-python,sqlalchemy,flask

来自分类Dev

将Flask SQLAlchemy模型与常规SQLAlchemy结合使用

来自分类Dev

带pgpass文件的SQLAlchemy

来自分类Dev

带字典的SQLAlchemy插入

来自分类Dev

flask_sqlalchemy的未解决的导入

来自分类Dev

Flask-SQLAlchemy抽象基础模型

来自分类Dev

基于db的Flask-SQLAlchemy wtform

来自分类Dev

Flask SQLAlchemy分页错误

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

Flask-SQLAlchemy TimeoutError

来自分类Dev

Flask/SQLAlchemy Insert Into Database

来自分类Dev

Flask + SqlAlchemy ALTER表

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

无法安装Flask SQLAlchemy

来自分类Dev

如何在不使用SQLAlchemy的蓝图MySQL中修复Flask项目中的循环导入?

来自分类Dev

SQLAlchemy对删除的循环依赖

来自分类Dev

无法安装flask_sqlalchemy->导入错误:没有名为flask_sqlalchemy的模块

来自分类Dev

我应该导入flask.ext.sqlalchemy或flask_sqlalchemy吗?

来自分类Dev

带语句和SQLalchemy引擎

来自分类Dev

带语句和SQLalchemy引擎

来自分类Dev

SQLAlchemy选择带where约束

来自分类Dev

带关键字作为变量的flask sqlalchemy查询

来自分类Dev

将Flask-SQLAlchemy中的模型分离到另一个文件会中断PyDev导入检测

来自分类Dev

将Flask-SQLAlchemy中的模型分离到另一个文件会中断PyDev导入检测

来自分类Dev

使用Pandas / SQLAlchemy导入DateTime