2016-09-28 5 views
1

にクエリに列名のリストを渡すI次のクエリを持っている:はpsycopg2

select distinct * from my_table where %s is NULL; 

私はこのクエリに複数のカラム名を渡すことができるようにしたいと思いますが、私は知りません毎回nullをチェックする列の数を指定します。

私は同じ文?:

select distinct * from my_table where "col1" is NULL or "col2" is NULL; 
select distinct * from my_table where "col1" is NULL or "col2" is NULL or "col3" is NULL; 

から以下のクエリの両方を作るために上記のようなクエリパラメータの技術を使用することができる方法

私は同様に以下を取得することができるという含まれて答えをいただければ幸いですが、それは、この場合には必要ありません。

select distinct * from my_table where "col1" is NULL; 

答えて

1
query = ''' 
    select distinct * 
    from my_table 
    where 
     %s or 
     "col1" is NULL and %s or 
     "col2" is NULL and %s or 
     "col3" is NULL and %s 
''' 
(Iは、PostgreSQL関連の可能性を除去した場合には、アマゾン赤方偏移を使用しています)

Trueを評価したい条件に合格させてください。

cursor.execute(query, (False, True, True, False)) 

あなたは関係なく、すべての行場合:あなたはcol1col2のいずれかがnullある行たいとBTW

cursor.execute(query, (True, False, False, False)) 

は、識別子を引用倍増することは悪い考えです。

関連する問題