Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2013 19:31:25

alexiy
Зарегистрирован: 2013-10-16
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение текста с одинарными кавычками

Добрый день..

есть 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 типа всё нормально сохранялось в изначаьном виде? Замена на другой символ не подходит, экранирование как в примере выше не работает.

Отредактировано alexiy (Окт. 16, 2013 19:32:46)

Офлайн

#2 Окт. 16, 2013 19:43:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сохранение текста с одинарными кавычками

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.



Офлайн

#3 Окт. 17, 2013 05:02:07

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Сохранение текста с одинарными кавычками

FishHook
Нельзя так делать, тысячу раз говорено-переговорено.
Это прямо эталон граблей из палаты мер и весов :)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#4 Окт. 19, 2013 20:58:24

alexiy
Зарегистрирован: 2013-10-16
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение текста с одинарными кавычками

FishHook

спасибо! Где-то я всёже видел такой пример, потому использовал.
Теперь всё Ок

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version