首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于过滤列数据的SQLite WHERE子句的AppBuilder等效

用于过滤列数据的SQLite WHERE子句的AppBuilder等效
EN

Stack Overflow用户
提问于 2018-09-04 22:48:57
回答 2查看 1K关注 0票数 1

我是一个新的酒瓶,并已开始设计一个前端的库存管理数据库使用Flask-AppBuilder

我创建了几个模型,并使用Flask-AppBuilderviews在表中显示了我的sqlite数据。

但是,我似乎无法找到与SQLite WHERE子句相同的内容来筛选或“限制”列数据。我已经读了很多关于sqlalchemy、过滤器、查询的文章,但这让我更加困惑,因为其他的东西和解释似乎都非常复杂,做一些非常简单的事情也是非常复杂的。

假设我们在中复制了以下SQLite查询:

代码语言:javascript
复制
SELECT Field_A
FROM Table_A
WHERE Field_A = 'some text'

通过以下方式:

result = session.query(Table_A).filter_by(Field_A = 'some text').all()

在我的应用程序中,上面的代码行在哪里?

考虑到我有以下Class

代码语言:javascript
复制
class Table_A(Model):
    id = Column(Integer, primary_key=True)
    Field_A =  Column(String)

    def __repr__(self):
        return self

View

代码语言:javascript
复制
class Table_AView(ModelView):
    datamodel = SQLAInterface(Table_AView)
    label_columns = {'Field_A':'A'}
    list_columns = ['Field_A']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-08 16:01:32

经过深入研究,flask-appbuilder使用了它自己的过滤器类,以使您能够过滤视图。

这里引用了GitHub:烧瓶过滤器Clases列表上的所有类

这里也没有FilterEqualFilterEqualFunction的区别:FilterEqual和FilterEqualFunction之间有什么区别?

对于其他定制和第一个调用端口,可以直接访问API参考,在那里您可以找到过滤器类的几个实际操作示例。

从本质上讲,这是极其简单的。在views.py类中的ModelView代码中,只需过滤,只需添加base_filters = [['field_A', FilterEqual, 'abc']],如下所示:

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

希望这能帮上忙,因为我花了将近两个星期才弄明白.

票数 1
EN

Stack Overflow用户

发布于 2018-09-05 01:59:57

SQLALchemy是一个ORM (对象-关系映射),它意味着您不必处理原始的SQL,您将调用一个您“构建”的函数(在您的情况下添加过滤器)。它将透明地生成一个SQL查询,执行它,并将结果作为python对象返回。

我建议您再仔细阅读sqlalchemy关于过滤器的文档,特别是filter_by:通过

使用sqlalchemy应用WHERE是最简单的方法。如果您正确声明了Table_A的模型,那么您应该能够这样使用它:

代码语言:javascript
复制
result = session.query(Table_A).filter_by(Field_A = 'some text').all()

在这里,session.query(Table_A).filter_by(Field_A = 'some text')将生成SQL,而.all()将执行它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52174909

复制
相关文章

相似问题

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