代码之家  ›  专栏  ›  技术社区  ›  Alex B

用于过滤列数据的SQLite WHERE子句的等价物

  •  1
  • Alex B  · 技术社区  · 6 年前

    我对Flask是个新手,已经开始使用Flask为库存管理数据库设计前端 Flask-AppBuilder .

    我已经创建了几个模型,并使用 烧瓶AppBuilder views .

    然而,我似乎找不到SQLite的等价物 WHERE sqlalchemy

    假设我们在Flask AppBuilder中复制以下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']
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Alex B    6 年前

    经过多次挖掘 flask-appbuilder 用它自己的 以使您能够筛选视图。

    Flask Filter Clases List

    也没有区别 FilterEqual FilterEqualFunction 在这里: What is the difference between : FilterEqual and FilterEqualFunction?

    对于其他定制和Flask appbuilder的第一个调用端口,请直接访问 API Reference 在这里你会发现一些 过滤器类 在行动中。

    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 .

    希望这能帮助别人,因为它几乎花了我 (叹息) 两周后才能弄明白。。。

        2
  •  0
  •   SivolcC    6 年前

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

    我建议您再次仔细阅读sqlalchemy关于过滤器的文档,特别是通过以下方式过滤: http://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.filter_by

    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()

    推荐文章