Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2011 05:45:58

uuu
От:
Зарегистрирован: 2011-02-13
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3, like, utf - не ищет

Пытаюсь выполнить поиск

req = request.POST.get('req','')
conn = sqlite3.connect('db.db')
c = conn.cursor()
c.execute(“SELECT * FROM db WHERE field LIKE ?”,('%' + req + ‘%’,))
result1 = c.fetchall()

для английских слов работает, для русских слов выдаёт, что сделайте text_factory = ‘utf-8’. делаем:

req = request.POST.get('req','')
conn = sqlite3.connect('db.db')
conn.text_factory = ‘utf-8’
c = conn.cursor()
c.execute(“SELECT * FROM db WHERE field LIKE ?”,('%' + req + ‘%’,))
result1 = c.fetchall()

и получаем: TypeError(“'str' object is not callable”,)

если убрать процентики, то просто запросы работают, но это уже не поиск.


Даже не представляю, как это всё работает, и что тут нужно изменить.



Офлайн

#2 Сен. 5, 2011 09:34:11

pill
От:
Зарегистрирован: 2010-08-27
Сообщения: 223
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3, like, utf - не ищет

там ф-ция должна быть.
скорее всего вот это должно подойти:

con.text_factory = lambda x: unicode(x, "utf-8", "ignore")
http://docs.python.org/library/sqlite3.html#sqlite3.Connection.text_factory



Отредактировано (Сен. 5, 2011 09:36:04)

Офлайн

#3 Сен. 5, 2011 11:55:47

uuu
От:
Зарегистрирован: 2011-02-13
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlite3, like, utf - не ищет

у меня подошло con.text_factory = str но оно по русским буквам регистрозависимо ищет. :( я уж думал, что не осталось в 2011 году чего-то, не умеющего нормально utf-8, у меня даже grep нормально по utf-8 ищет…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version