Подтвердить что ты не робот

Хороший способ избежать кавычек в строке запроса базы данных?

Я пробовал всевозможные модули Python, и они либо избегают слишком большого, либо неправильного пути. Каким лучшим способом вам удалось избежать кавычек ( "," ) в Python?

4b9b3361

Ответ 2

Используйте json.dumps.

>>> import json
>>> print json.dumps('a"bc')
"a\"bc"

Ответ 3

Легкий и стандартный способ избежать строк и конвертировать другие объекты в программную форму - это использовать функцию build в функции repr(). Он преобразует объект в представление, которое вам нужно будет ввести с помощью ручного кода.

например:.

s = "I'm happy I am \"here\" now"
print repr(s)
>>  'I\'m happy I am "here" now'

Нет странных хаков, он встроен, и он просто работает для большинства целей.

Ответ 5

Ответ для старой темы, но лучший способ все еще отсутствует здесь.

Если вы используете psycopg2, он выполняет -method имеет buildin escaping.

cursor.execute("SELECT column FROM table WHERE column=%s AND column2=%s", (value1, value2))

Обратите внимание, что вы даете два аргумента для выполнения метода (string и tuple) вместо использования оператора Python% для изменения строки.

Ответ украден отсюда: psycopg2 эквивалент mysqldb.escape_string?

Ответ 6

Тройные одинарные кавычки удобно инкапсулируют одинарные кавычки, часто используемые в запросах SQL:

c.execute('''SELECT sval FROM sdat WHERE instime > NOW() - INTERVAL '1 days' ORDER BY instime ASC''')

Ответ 7

Тройные двойные кавычки лучше всего подходят для экранирования:

string = """This will span across 'single quotes', "double quotes",
and literal EOLs all in the same string."""

Ответ 8

Для решения более общей проблемы у меня есть программа, в которой мне нужно было хранить любой набор символов в плоском файле, с разделителем табуляции. Очевидно, что наличие вкладок в "наборе" вызывало проблемы.

Вместо output_f.write(str) я использовал output_f.write(repr (str)), который решил мою проблему. Это медленнее читать, так как мне нужно eval() вводить, когда я его читаю, но в целом он делает код более чистым, потому что мне больше не нужно проверять случаи бахромы.

Ответ 9

Для моего случая использования я сохранял абзац в базе данных, и где-то в абзаце мог быть какой-то текст с одинарной цитатой (example: Charlie apple sauce was soggy)

Я нашел это работать лучше всего:

database_cursor.execute('''INSERT INTO books.collection (book_name, book_quoted_text) VALUES ('%s', "%s")''' % (book_name, page_text.strip()))

Вы заметите, что я использую "" после переноса оператора INSERT в '''