python-Django RAWクエリを使用してSQLクエリを実行しています。構文空のリストが渡されたときにSQLクエリ(選択)にエラーが発生しました
私はIN()関数を使用してクエリでタプルを渡します。私のコードは次のようになり
...
ここで私は、JSON /機能からdnc_domains
とdnc_company
のリストを取得しています
dnc_domain_names = list(map(lambda x: get_domain_name(x), dnc_websites))
dnc_company_names = list(map(lambda l: l.lower(), list(filter(None, list(map(lambda x: x['company_name'], dnc_info))))))
QUERY:クエリを実行
select_query = """
select c.id
from (
select id, lower(company_name) as c_name,substring(website from '(?:.*://)?(?:www\.)?([^/]*)') as website_domain,
from contacts
where campaign_id = %s
) c
where
c.c_name IN %s
OR c.website_domain IN %s
"""
:
with connection.cursor() as cursor:
cursor.execute(select_query, (campaign.id,tuple(dnc_company_names),tuple(dnc_domain_names))
matching_contact_ids = cursor.fetchall()
しかし、dnc_company_names
またはdnc_domain_name
がである場合、[]と表示される場合があります。それ以外の場合は、少なくとも1つの要素があれば、クエリはエラーをスローします。
SQLエラー:
syntax error at or near ")"
LINE 5: WHERE id IN()
^
ので、このエラーに対処するために私を助けて。 SQLは、空または非空のタプルの両方を処理する必要があります。
私の場合、別のファイルのJSONデータを '' IN() ''関数で使用していますが、別のテーブルのサブクエリではありません –