Я сделал список id, каждое значение - это тип int
temp_id = [7922, 7018, 5650, 209, 21928, 2294, 10507, 3623]
type(tempasn)
list
Это работает:
Temp = pd.read_sql("select count(*) as count\
from "+db+"\
where ids in (7922, 7018, 5650, 209, 21928, 2294, 10507, 3623)\
order by count desc limit 10", conn)
Я хочу, чтобы переменная из списка добавила ее в мой запрос
Это вызывает ошибки
Temp = pd.read_sql("select count(*) as count\
from "+db+"\
where ids in "+temp_id+"\
order by count desc limit 10", conn)
TypeError: Can't convert 'list' object to str implicitly
Я не понимаю, что мне нужно изменить здесь
Ответ
Закончился с учетом рекомендаций ниже и изменил мой цикл, который генерирует temp_ids:
temp_id = []
for id in df['ID']:
if id and id not in temp_id:
temp_id.append(str(ID))
#Convert to list format
temp_id = ", ".join(temp_id)
2 вещи сделали эту работу:
str(ID) & temp_id = ", ".join(temp_id)
Вам нужно сохранить переменные как строку, разделенную запятой, вместо массива.
Поэтому объявляйте temp_id как строку.
temp_id = "7922, 7018, 5650, 209, 21928, 2294, 10507, 3623"
Temp = pd.read_sql("select count(*) as count\
from "+db+"\
where ids in ("+temp_id+")\
order by count desc limit 10", conn)
Вам нужна строка, поэтому вы должны взломать массив
temp_id = [7922, 7018, 5650, 209, 21928, 2294, 10507, 3623]
my_string = ",".join(temp_id )
Temp = pd.read_sql("select count(*) as count\
from "+db+"\
where ids in ("+my_string+")\
order by count desc limit 10", conn)
"("+str(temp_id).strip('[]')+")"