Найти - Пользователи
Полная версия: sqlite3, like, utf - не ищет
Начало » Базы данных » sqlite3, like, utf - не ищет
1
uuu
Пытаюсь выполнить поиск

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”,)

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


Даже не представляю, как это всё работает, и что тут нужно изменить.
pill
там ф-ция должна быть.
скорее всего вот это должно подойти:
con.text_factory = lambda x: unicode(x, "utf-8", "ignore")
http://docs.python.org/library/sqlite3.html#sqlite3.Connection.text_factory
uuu
у меня подошло con.text_factory = str но оно по русским буквам регистрозависимо ищет. :( я уж думал, что не осталось в 2011 году чего-то, не умеющего нормально utf-8, у меня даже grep нормально по utf-8 ищет…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB