小编Alo*_*onP的帖子

Flask SQLAlchemy - StaticMethod vs Custom Querying Class

我有一个Event带有两个start_datedue_date列的模型.我想创建一种简单的方法来获取所有活动事件(已经启动但尚未完成).

这是我的Event模型类:

class Event(db.Model):
    __tablename__ = 'events'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(254))
    description = db.Column(db.Text)
    start_date = db.Column(db.DateTime)
    due_date = db.Column(db.DateTime)
Run Code Online (Sandbox Code Playgroud)

我熟悉两种有效的解决方案:

1:使用一个staticmethod函数,它将在Event.query对象上生成所有过滤器并返回一个完整的活动事件列表

class Event(BaseModel):
    ...
    @staticmethod
    def get_active():
         return Event.query.filter(...).all()

# Usage:
records = Event.get_active()
Run Code Online (Sandbox Code Playgroud)

2:通过创建一个继承自的新查询对象BaseQuery,并将此新"EventQuery"类分配给Model的query_class成员.

class EventQuery(BaseQuery):
    def get_active(self):
        return self.filter(...)

class Event(BaseModel):
    __tablename__ = 'events'
    query_class = EventQuery
    ....

# Usage:
Event.query.get_active().all()
Run Code Online (Sandbox Code Playgroud)

所以我想知道,哪种方法更好/推荐?

python model flask flask-sqlalchemy

7
推荐指数
1
解决办法
889
查看次数

Flask配置文件 - 'DEBUG = True'什么都不做

我在一个名为"MyApp"的软件包中构建了一个大型烧瓶应用程序(完全如下所示:http://flask.pocoo.org/docs/0.12/patterns/packages/)

根据Flask文档,调试模式应启用以下功能:

  1. 它激活调试器
  2. 它激活自动重新加载器
  3. 它启用Flask应用程序上的调试模式.

一开始我用以下命令运行我的烧瓶应用程序,一切都运行良好:

export FLASK_APP=MyApp
export FLASK_DEBUG=1 
flask run
Run Code Online (Sandbox Code Playgroud)

然后我读到了设置配置系统的正确方法(包括调试模式).所以我创建了以下config.py文件:

class Config(object):
    DEBUG = False
    ...

class ProductionConfig(Config):
    ...

class DevelopmentConfig(Config):
    DEVELOPMENT = True
    DEBUG = True
    ...

CONFIGS = {
    "development": DevelopmentConfig,
    "production": ProductionConfig,
    "default": DevelopmentConfig
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序__init__.py文件中,我写道:

app = Flask(__name__)
config_name = os.getenv('FLASK_CONFIGURATION', 'default')
app.config.from_object(CONFIGS[config_name])
Run Code Online (Sandbox Code Playgroud)

现在,要运行应用程序,我输入一个新命令:

export FLASK_APP=MyApp
export FLASK_CONFIGURATION=development 
flask run
Run Code Online (Sandbox Code Playgroud)

不幸的是,这次调试模式根本没有激活..

没有激活调试器或自动重新加载器.唯一改变的app.debug是现在等于True.

我不明白..它看起来DEBUG = TRUE不能正常工作.

你知道为什么会这样吗?

python debugging flask

6
推荐指数
1
解决办法
2692
查看次数

标签 统计

flask ×2

python ×2

debugging ×1

flask-sqlalchemy ×1

model ×1