当前位置: 首页 > 面试题库 >

我可以避免在Flask和SQLAlchemy中循环导入

越涛
2023-03-14
问题内容

app / init .py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__ name __)
db = SQLAlchemy(app)  
from app import views, models

app / models.py:

from app import db  # I want to avoid this everywhere

我真的不喜欢子模块依赖于其父模块。也可以避免全局包变量吗?我想要更多面向对象的解决方案。

应用程序的一种替代方法是使用我认为的“蓝图”,但是随后我松开了路线装饰器。同样,对于使用SQLAlchemy的数据库也无法做到这一点(或者可以吗?)。


问题答案:

看一下这个项目:https :
//github.com/sloria/cookiecutter-
flask

这是一个以正确的方式做事的好例子。使用了Flask的许多出色功能:蓝图,应用程序工厂等等。

这是他们注册扩展的方式,例如SQLAlchemy数据库:

# app/extensions.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
...


# app/app.py
from app.extensions import db

def create_app(config_object=ProdConfig):
    app = Flask(__name__.split('.')[0])
    app.config.from_object(config_object)
    register_extensions(app)
    ...

def register_extensions(app):
    db.init_app(app)
    ...


 类似资料:
  • 问题内容: 我知道python中的循环导入问题已经出现过很多次了,我已经阅读了这些讨论。在这些讨论中反复提出的意见是,循环导入表明设计不良,应重新组织代码以避免循环导入。 有人可以告诉我在这种情况下如何避免循环导入吗?:我有两个类,并且我希望每个类都有一个构造函数(方法),该构造函数接受另一个类的实例并返回该类的实例。 更具体地说,一类是可变的,一类是不变的。哈希,比较等需要不可变的类。可变类也需

  • 问题内容: 我使用一个简单的cms作为我网站的后端,在那里我可以更新新闻等。我想对SQL注入安全,所以我想知道这段代码是否被认为是安全的,或者是否可以做一些使其更安全的事情: 谢谢,祝你有美好的一天! 问题答案: 您没有在消毒 。 做一个就可以了,或(更好)拒绝共处理如果ID不是整数(假设ID是一个字段)。

  • 问题内容: 我们都知道您由于以下原因而无法执行以下操作: 但这显然有时有效,但并非总是如此。这是一些特定的代码: 当然,这导致: 即使没有多个线程。无论如何。 解决此问题的最佳方法是什么?如何在不引发此异常的情况下循环地从集合中删除项目? 我还在这里使用任意值,不一定是an t,因此您不能依赖。 问题答案: 是安全的,您可以这样使用它: 注意,这是在迭代过程中修改集合的唯一安全方法。如果在进行迭代

  • 问题内容: 我尝试使用MVP范例构建Webapp。因为我希望API干净并且使所有内容易于测试,所以我尝试通过Contructor Injection注入所有可能的内容。现在,我到了一个具有多个文本字段的视图。当数据库中有值时,演示者将填充这些文本字段,因此我的演示者需要视图的引用,但是vie显然也需要演示者的引用。CDI告诉我,由于循环依赖性,无法将Presenter注入视图。是否有可能避免通过s

  • 从我的main开始,我将启动两个线程,称为producer和consumer。两者都包含循环。生产者循环是UDP服务器,因此不需要Hibernate。我的问题出在消费者方面。使用者循环将对象从链接队列中移除,并将其传递给一个函数进行进一步处理。根据研究,在循环中使用线程Hibernate不是一个好的实践,因为有时O/S在设定时间结束时不会释放。如果我删除线程Hibernate,当应用程序是理想的,

  • 本文向大家介绍关于Python如何避免循环导入问题详解,包括了关于Python如何避免循环导入问题详解的使用技巧和注意事项,需要的朋友参考一下 前言 Python 中使用package时,出现循环导入问题十分常见,我们创建如下package来说明这个问题: 其中, __init__.py 将pkg指定为一个Python package module_a.py中定义了一个action_a()函数,该