Политику прочь! Поговорим немножко о питоне.

У соединений MySQLdb всегда был такой метод — escape(), который принимал строку, кавычил её и экранировал опасные символы. Необязательно строку, на самом деле, что угодно. Так или иначе, вот он был, был, и прекрасно работал. Обычно он никому не нужен, потому что параметры запроса эскейпятся автоматически, если передавать их в запрос именно как параметры cursor.execute(query, params), а не вставлять тупо в строку. Но когда собираешь длинный запрос вручную, бывает проще использовать escape().

И вот я пишу что-то такое:

Python 2.4.1 (#2, May  5 2005, 11:32:06) 
>>> import MySQLdb as m
>>> c = m.connect(host='mysql.example.com', user='user', passwd='pass')
>>> print c.escape('123')
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: no default type converter defined

Тык, мык — вроде, должно работать! Ведь использовал когда-то! Запускаю python2.3, делаю всё то же — работает! Мистика! Глюки? Пионерские поделки!..

Иду в гугл, ищу «no default type converter defined» — находятся только вопросы, ответов нет!.. С горя пошёл в MSN, он меня иногда спасает, когда лажает гугл. Спас и в этот раз. Ответ нашёлся, правда, по-немецки, и не совсем удовлетворительный. Зачем-то нужно теперь передавать ещё один параметр, словарь функций-конвертеров.

В общем, я негодую. Плюнул и избавился от этого вызова вообще. Уж больно он неудобный: надо connection создавать (у меня он спрятан под слоями абстракций, так что либо лезть куда-то в кишки, либо создавать новый).

…Ну и кому это может быть интересно? Буду лучше про блогосферу писать, да про политику…

Реклама