Вот код SQL в виде строки в python:
sql_code = """
SELECT VAR
VAR2
FROM TABLE
WHERE VAR in ('A','B')
"""
И я хотел бы создать переменную для списка выбора в предложении WHERE, это то, что мы можем сделать:
sql_code_arg1 = """
SELECT VAR
VAR2
FROM TABLE
WHERE VAR in {}
"""
Затем
lst=["A","B"]
print(sql_code_arg1.format(tuple(lst)))
Теперь я хотел бы указать все условие в предложении WHERE:
sql_code_arg2 = """
SELECT VAR
VAR2
FROM TABLE
WHERE {}
"""
Я пробовал что-то вроде этого:
print(sql_code_arg2.format("VAR in "+tuple(list)))
Но это не работает.
Отвечает ли это на ваш вопрос? Использование переменных в функции format() в Python
Это для MS SQL






Избегайте создания запросов sql из необработанной строки. он не гибкий, небезопасный и неудобный в обслуживании. Для генерации sql запросов используйте библиотеку https://github.com/kayak/pypika
С помощью этой библиотеки вы можете генерировать sql-запросы из таких объектов, как
customers = Table('customers')
q = Query.from_(customers).select(
customers.id, customers.fname, customers.lname, customers.phone
).where(
customers.fname == 'Max'
).where(
customers.lname == 'Mustermann'
)
и когда вам нужна строка sql, вы просто вводите запрос в строку и получаете это
SELECT id,fname,lname,phone FROM customers WHERE fname='Max' AND lname='Mustermann'
Вы пытались добавить строку с кортежем.
format("VAR in "+tuple(list)))
Скорее, это должно работать:
sql_code_arg2.format("VAR in "+str(tuple(lst)))
Отказ от ответственности: этот метод не рекомендуется, поскольку он допускает внедрение SQL.
Пожалуйста, не рекомендуйте методы, допускающие внедрение SQL.
@Ijmc да, ты прав!
Какой DB-API вы используете?