SQL в python для включения предложения where

Вот код 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)))

Но это не работает.

Какой DB-API вы используете?

ljmc 06.01.2023 16:18

Отвечает ли это на ваш вопрос? Использование переменных в функции format() в Python

Jim G. 06.01.2023 16:23

Это для MS SQL

John Smith 15.01.2023 09:41
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Избегайте создания запросов 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.

ljmc 06.01.2023 16:24

@Ijmc да, ты прав!

God Is One 06.01.2023 16:25

Другие вопросы по теме