繁体   English   中英

在运行时动态生成where语句

[英]Dynamically generating where statements during runtime

我正在使用Sqlalchemy来自动化SQL查询,以分析我们运行的A / B测试。

这是一个示例查询:

    uniques_by_day = select([
                        first_seen_byos.c.unique_id,
                        func.date_trunc('day', a_unique_users.c.ds).label('current_day'),
                        func.date_trunc('day', first_seen_byos.c.ds).label('cohort_join_day')
                        ]).\
                    select_from(joined_table).\
                    where(
                        and_(
                            a_unique_users.c.os_type == 'iphone_native_app',
                            first_seen_byos.c.ds >= '2017-01-01'
                            )
                        )

在查询之间要更改的是where / and_语句的子句。 我该如何写一条通用语句来使用动态的where子句集? 我预计这些子句将始终是一系列AND子句。

当我需要动态构建查询时,通常会执行以下操作:

query = session.query(MyTable)
if case_1:
    query = query.filter(MyTable.column_1 == 'foo')
if case_2:
    query = query.filter(MyTable.column_2 == 'bar')
query_results = query.all()

这使用了声明式基本语法,但我认为它可以使您理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM