首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >采用db模型的圆形进口方炼金术瓶

采用db模型的圆形进口方炼金术瓶
EN

Stack Overflow用户
提问于 2020-04-06 16:44:10
回答 1查看 681关注 0票数 2
代码语言:javascript
运行
复制
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

上面是我的应用程序结构--“模型”文件夹中有db类,问题是品牌模块中的类(通过关系)涉及并导入了产品规范模块中的类,并且有很多相关的db类。如何在没有循环导入的情况下将它们导入到烧瓶restful的CRUD资源中。

app.py的结构如下:

代码语言:javascript
运行
复制
from erp import app

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

企业资源计划/ini.py的代码是:

代码语言:javascript
运行
复制
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模块等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 17:43:25

您应该使用应用程序工厂应用程序。您可以找到官方推荐的这里,这是一个好教程

重构之后,您的erp/__init__.py应该类似于:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
from erp import create_app

app = create_app()

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

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

代码语言:javascript
运行
复制
from erp import app, db
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61064752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档