Найти - Пользователи
Полная версия: Сохранение текста с одинарными кавычками
Начало » Базы данных » Сохранение текста с одинарными кавычками
1
alexiy
Добрый день..

есть Python-скрипт работающий с базой данных - в одном месте берёт из сети текст и заносит его в таблицу MySQL. Текст может быть апсолютно любой.

Всё работает до тех пор, пока в тексте не встречается одинарная кавычка.

Часть скрипта:

...
con = mdb.connect(host='127.0.0.1', user='user', passwd='pass', db='db_1', charset='utf8')
cur = con.cursor()
...
lines = "some text ' here"
lines = lines.replace("'", "\'")
print lines
sql = "INSERT INTO table_a (id, line) VALUES('xxxxxxxxxx" + p_id + "','" + lines + "');"
print sql
		
try:
	cur.execute(sql)
except:
	print "------------##################------------ SQL ERROR ------------##################------------\n"
	sys.exit(1)
...

..и вот всегда срабатывает этот Except.

Что нужно добавить\изменить, чтоб в таблицу с колонкой TEXT типа всё нормально сохранялось в изначаьном виде? Замена на другой символ не подходит, экранирование как в примере выше не работает.
FishHook
sql = "INSERT INTO table_a (id, line) VALUES('xxxxxxxxxx" + p_id + "','" + lines + "');"
Нельзя так делать, тысячу раз говорено-переговорено. Нигде, ни в каком мануале Вы не встретите такого примера.
Вот так надо.
cur.execute("INSERT INTO im_entry.test (colname) VALUES (%s)", [p])


You should always use placeholders, instead of concatenating strings together.
PooH
FishHook
Нельзя так делать, тысячу раз говорено-переговорено.
Это прямо эталон граблей из палаты мер и весов :)
alexiy
FishHook

спасибо! Где-то я всёже видел такой пример, потому использовал.
Теперь всё Ок
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB