Форум сайта python.su
Здравствуйте!
Пытаюсь сделать простой запрос с защитой от sql инъекций:
cursor.execute(u'SELECT * FROM list WHERE type_id =?', (2,))
File "/usr/local/lib/python2.6/dist-packages/cherrypy/_cprequest.py", line 645, in respond
response.body = self.handler()
File "/usr/local/lib/python2.6/dist-packages/cherrypy/lib/encoding.py", line 188, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/cherrypy/_cpdispatch.py", line 29, in __call__
return self.callable(*self.args, **self.kwargs)
File "/var/www/events/www.py", line 81, in index
cursor.execute(u'SELECT * FROM list WHERE type_id =?', (str(2),))
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 151, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
Офлайн
andreiruПлейсхолдер в запросе используете не верный.
Подскажите пожалуйста что не так делаю ?
Офлайн
Александр КошелевПлейсхолдер - это знак вопроса (type_id =?) ?andreiruПлейсхолдер в запросе используете не верный.
Подскажите пожалуйста что не так делаю ?
Офлайн
andreiru%s
Плейсхолдер - это знак вопроса (type_id =?) ?
Офлайн
PooH, спасибо!
Как быть если мне необходимо использовать LIKE %..% в запросе =>
sql = u'SELECT * FROM list WHERE name LIKE \%%s\%'
Офлайн
andreiruВообще заэкранировать процент %%, но вам это не поможет, потому как MySQLdb любезно заключит строковую переменную в кавычки. Действовать надо так
Как быть если мне необходимо использовать LIKE %..% в запросе =>Выдаёт ошибку, пробовал экранировать, не помогает !?sql = u'SELECT * FROM list WHERE name LIKE \%%s\%'
cursor.execute(u'SELECT * FROM list WHERE name LIKE %s', ('%%%s%%' % name,))
Офлайн
PooH ясно, спасибо большое!
Офлайн