2017-01-07 5 views
0

私が実行するA/Bテストを解析するSQLクエリを自動化するためにSqlalchemyを使用しています。ここで実行時にwhere文を動的に生成する

は、クエリの例です:クエリの間で変更するために何が起こっている

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

はどこ/ and_文の句です。どのように句の動的なセットを消費することができる一般的なステートメントを書くために行くのですか?私は、これらの節が常に一連のAND節であることを予期しています。私は動的にクエリを構築する必要がある場合

+1

はどこですか(1 = 1と_(...)) 'は役に立ちますか? –

+0

この文脈でどのように使用するのかよくわからない –

答えて

1

私は通常、このような何かを:

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

これは、宣言型の基本構文を使用しているが、私はそれは全体のアイデアを得ると思います。

関連する問題