Форум сайта python.su
Похоже “наступил на грабли”. Не корректно отрабатывает psycopg2 спец. символы (например %). Каким образом лучше их экранировать (как это сейчас народ делает)? Возможно в самом psycopg2 есть такой стандартный механизм? Подскажите плиз, кто в теме.
Отредактировано vak (Ноя. 8, 2013 05:15:49)
Офлайн
пример некорректной работы покажите
Офлайн
Вот код
def NewD(user_kod,contragent,tema,text): user_kod = user_kod.encode("utf-8") contragent = contragent.encode("utf-8") tema = tema.encode("utf-8") text = text.encode("utf-8") cursor = connections['default'].cursor() cursor.execute("SELECT t_NewD('%s','%s','%s','%s');" % (user_kod,contragent,tema,text)) transaction.commit_unless_managed() data = cursor.fetchone() return data[0]
Прикреплённый файлы: Захват-1.jpg (77,4 KБ)
Офлайн
Вот еще ручками:
>>> NewD('','%','%','%') Traceback (most recent call last): File "<console>", line 1, in <module> File "/opt/kis/kis/lib/contract.py", line 81, in NewD cursor.execute("SELECT t_NewD('%s','%s','%s','%s');" % (user_kod,contragent,tema,text)) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 41, in execute return self.cursor.execute(sql, params) File "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py", line 54, in execute return self.cursor.execute(query, args) IndexError: tuple index out of range
Офлайн
http://python.su/forum/topic/22574/?page=1#post-116842
Офлайн
Офлайн