Как включить переменное количество переменных в оператор SQL? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть несколько переменных (количество меняется при каждом выполнении скрипта). Мне нужно вставить эти переменные в оператор SQL. Например, предположим, что оператор sql:

select * from customer where customer_id in (...);

То, что будет в этих пунктирных линиях, будет моей переменной. Если бы я знал количество переменных, я мог бы сделать что-то вроде:

query='''create table xyz as 
         select * from customer where customer_id in (?,?);'''
cursor.execute(query,var1,var2)
query='select * from xyz;'
xyz_details=pd.read_sql(query,con)

Но так как число меняется, я не могу сохранить фиксированное число '?'в моем запросе. Это может быть 2 в одном проходе и 4 в другом. Скрипт хранит количество в переменной 'cnt'. Так что, если cnt равен 4, у меня есть var1,var2,var3,var4 в качестве аргументов, и мне нужно будет 4 '?'в моем запросе.

Однако, так как эти значения продолжают изменяться, я не могу зафиксировать определенное значение в своем запросе, и я ищу, как поступить.

Любые комментарии приветствуются!

1 Ответ

1 голос
/ 14 октября 2019

Может быть, вы можете попробовать что-то подобное?

list_args = [var1, var2, ..., varn]
query='''create table xyz as 
         select * from customer where customer_id in ({});'''.format(','.join('?' * len(list_args)))
cursor.execute(query,var1,var2)
query='select * from xyz;'
xyz_details=pd.read_sql(query,con)
...