我是一个新的酒瓶,并已开始设计一个前端的库存管理数据库使用Flask-AppBuilder。
我创建了几个模型,并使用Flask-AppBuilder的views在表中显示了我的sqlite数据。
但是,我似乎无法找到与SQLite WHERE子句相同的内容来筛选或“限制”列数据。我已经读了很多关于sqlalchemy、过滤器、查询的文章,但这让我更加困惑,因为其他的东西和解释似乎都非常复杂,做一些非常简单的事情也是非常复杂的。
假设我们在中复制了以下SQLite查询:
SELECT Field_A
FROM Table_A
WHERE Field_A = 'some text'通过以下方式:
result = session.query(Table_A).filter_by(Field_A = 'some text').all()
在我的应用程序中,上面的代码行在哪里?
考虑到我有以下Class
class Table_A(Model):
id = Column(Integer, primary_key=True)
Field_A = Column(String)
def __repr__(self):
return self和View
class Table_AView(ModelView):
datamodel = SQLAInterface(Table_AView)
label_columns = {'Field_A':'A'}
list_columns = ['Field_A']发布于 2018-09-08 16:01:32
经过深入研究,flask-appbuilder使用了它自己的过滤器类,以使您能够过滤视图。
这里引用了GitHub:烧瓶过滤器Clases列表上的所有类
这里也没有FilterEqual和FilterEqualFunction的区别:FilterEqual和FilterEqualFunction之间有什么区别?
对于其他定制和第一个调用端口,可以直接访问API参考,在那里您可以找到过滤器类的几个实际操作示例。
从本质上讲,这是极其简单的。在views.py类中的ModelView代码中,只需过滤,只需添加base_filters = [['field_A', FilterEqual, 'abc']],如下所示:
`class Table_AView(ModelView):
datamodel = SQLAInterface(Table_AView)
label_columns = {'Field_A':'A'}
list_columns = ['Field_A']
base_filters = [['field_A', FilterEqual, 'abc']]`这将只显示field_A变量等于abc的行。
希望这能帮上忙,因为我花了将近两个星期才弄明白.
发布于 2018-09-05 01:59:57
SQLALchemy是一个ORM (对象-关系映射),它意味着您不必处理原始的SQL,您将调用一个您“构建”的函数(在您的情况下添加过滤器)。它将透明地生成一个SQL查询,执行它,并将结果作为python对象返回。
我建议您再仔细阅读sqlalchemy关于过滤器的文档,特别是filter_by:通过。
使用sqlalchemy应用WHERE是最简单的方法。如果您正确声明了Table_A的模型,那么您应该能够这样使用它:
result = session.query(Table_A).filter_by(Field_A = 'some text').all()在这里,session.query(Table_A).filter_by(Field_A = 'some text')将生成SQL,而.all()将执行它。
https://stackoverflow.com/questions/52174909
复制相似问题