私はpsycopg2
を使用してPython 3でPostgreSQLデータベースにアクセスしています。リストに名前が入っているすべてのユーザを選択するクエリを作成しようとしています。の場合はです。提供されたリストが空の場合、その名前に関係なくすべてのユーザーを選択するという条件を無視します。値がリストにあるかどうか、またはリストが空であるかどうかをチェックする方法?
私はすでに、次の3つの呼び出し試してみた:
# Using list
cursor.execute(
"SELECT age FROM user WHERE %(names) = '{}' OR user.name IN %(names)s",
{'names': []},
)
# Using tuple
cursor.execute(
"SELECT age FROM user WHERE %(names) =() OR user.name IN %(names)s",
{'names':()},
)
# Using both list and tuple
cursor.execute(
"SELECT age FROM user WHERE %(names_l) = '{}' OR user.name IN %(names_t)s",
{'names_l': [], 'names_t':()},
)
をしかし、それらはすべて一点または別の無効な構文エラーを上げる:あなたはSQLをしたいオプションのパラメータについては
# Using list
psycopg2.ProgrammingError: syntax error at or near "'{}'"
LINE 17: user.name IN '{}'
# Using tuple
psycopg2.ProgrammingError: syntax error at or near ")"
LINE 16: () ==()
# Using both list and tuple
psycopg2.ProgrammingError: syntax error at or near ")"
LINE 17: user.name IN()
私が知っていたにもかかわらず、私はSQLの 'NULL'を使用することが実現していない、今は本当に愚かな感じそれは存在し、すべて...しかし、これは素晴らしい仕事、助けてくれてありがとう! :) –