sql >> データベース >  >> RDS >> Oracle

データベースAPI:Pythonで複数のwhere条件を処理する方法

    値ごとにSQLパラメータを使用する必要があります。

    in の場合 ステートメント、つまり、パラメータを生成する必要があります:

    sql = 'select * from tbl where params1=:params1 and params2=:params2 and params3 in ({})'.format(
        ', '.join(['params3_' + str(i) for i in range(len(params3_value))])
    

    ここで、 params3_value params3をテストする値のリストです。 に対して。 params3_valueの場合 は3つの要素です( ['v1'、'v2'、'v3']など )生成されたSQLは次のようになります:

    select * from tbl where params1=:params1 and params2=:params2 and params3 in (:params3_0, :params3_1, :params3_2)
    

    次に、それらのパラメーターを cursor.execute()に渡します。 電話:

    params = {'params1': params1_value, 'params2': params2_value}
    for i, val in enumerate(params3_value):
        params['params3_' + str(i)] = value
    cursor.execute(sql, {params})
    

    :nameを使用しました cx_Oracle cx_Oracle であるため、ここではSQLパラメータスタイルという名前を付けています。 を使用します。サポートされている正確なパラメータスタイルについては、データベースコネクタのドキュメントを参照してください。

    :named 名前付きSQLパラメータスタイルでは、パラメータを辞書として渡す必要があるため、上記のコードは params3_valueに適切なキーを生成します。 アイテム。




    1. PostgreSQL正規表現の単語境界?

    2. グループ化して列を追加

    3. SQLServerで特定の列を含むテーブルを見つける方法

    4. すべてのクエリをmysqlに記録します