Каков наилучший способ передачи нескольких строковых переменных в строку запроса в python3 - PullRequest
0 голосов
/ 21 февраля 2020

Мне нужно создать динамический c запрос, основанный на двух строковых параметрах:

description = "This is the description"
comment = "This is the comment"
query = "insert into case(desc, comm) value(description, comment)"

Примечание: может быть одинарная кавычка и двойные кавычки в обоих описании и комментарии .

Как использовать форматированный% s для генерации строки запроса?

Большое спасибо.

ОБНОВЛЕНИЕ:

Благодаря Green Cloak Guy (в его / ее ответе исправляются несовершеннолетние), правильный запрос:

query = f "вставить в регистр (описание, comment) значение (\ '{description} \', \ '{comment} \') "

1 Ответ

1 голос
/ 21 февраля 2020

Используйте f-строку.

query = f"insert into case({description}, {comment}) value({description}, {comment})"

Не используйте форматирование строк для выполнения запросов к базе данных - это приводит к проблеме SQL Injection. Вместо этого используйте библиотеку базы данных, которая должным образом очищает данные.

Но если все, что вам нужно сделать, это проанализировать некоторые переменные в строку, это более гибко, чем форматирование %, которое обычно используют другие языки ( и это технически все еще доступно в python через "some_string %s %s %s" % (str1, str2, str3)")

...