powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / ссылка на вариант решения проблемы с кириллицей в SQLite
16 сообщений из 16, страница 1 из 1
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36925337
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У кого возникали проблемы с кириллицей в SQLite, посмотрите сообщение .
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36925468
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Все есть в официальной документации :-) Регистро-независимый поиск реализуется 4-мя строками кода:

The "collate" method
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36936817
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую pySqlite2 на Python 2.3

LIKE с кирилицей работает корректно, но регистрозависимо.

Переопределение метода collate результатов не дало.
Ниже я привожу кусок кода, может я где ошибся?

Описываем функцию стравнения строк
Код: plaintext
1.
2.
def sqlite_nocase_collation(value1_, value2_):
    return cmp(value1_.decode('utf-8').lower(), value2_.decode('utf-8').lower())

И заменяем ею базовую функцию сравнения
Код: plaintext
1.
con.create_collation("NOCASE", sqlite_nocase_collation)

Подскажите, пожалуйста, как решить возникшую проблему.
Заранее благодарен, Иван.
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36936940
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KiV86,

Переопределение collation не влияет на функцию LIKE. Нужно определить функцию Like, например, вот так:

Код: plaintext
1.
2.
3.
4.
5.
def sqlite_like(value_, template_):
    return re.match(value_.lower(), template_.lower().replace("_", ".").replace("%", "(.*?")) != None
...
conn_.create_function("LIKE",  2 , sqlite_like)
...

Еще нужно учитывать, что есть LIKE с двумя и тремя параметрами. Я добавлю это в блог.
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36936946
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KiV86,

Почему Вы используете Python 2.3, а не 2.6 или 2.7?
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36937194
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor_krKiV86,

Почему Вы используете Python 2.3, а не 2.6 или 2.7?
Модифицирую продукт, работающий именно на этой версии.

victor_krПереопределение collation не влияет на функцию LIKE
Пробовал я и LIKE переопределять. Не помогло :(
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36937275
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я с 2.3 не работал. Но в 2.7 это точно работает. Может быть стоит проверить с другой версией Python и сузить зону поиска проблемы?
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36937286
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы точно переопределяли LIKE с двумя и тремя параметрами?
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36937419
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor_krВы точно переопределяли LIKE с двумя и тремя параметрами?
Переобределял только с двумя, как вы цитировали здесь.

При выборке использую запрос такого рода:
Код: plaintext
... LIKE '%товар%'...
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36937434
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor_krЯ с 2.3 не работал. Но в 2.7 это точно работает. Может быть стоит проверить с другой версией Python и сузить зону поиска проблемы?
Возможно, с версиями все и связано.

Вы используете sqlite3, который уже поставляется с Python.
А мне приходиться использовать библиотеку pysqlite 2.
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36957219
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И все же, переопределение функций дало результат и для pysqlite 2.X

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
def sqlite_like(value_, template_):
    try:
        v=unicode(value_).lower()
        u=unicode(template_).lower()
        return re.match(v.replace("_", ".").replace("%", ".*?"), u) != None
    except Exception,e:
        print e
...
conn_.create_function("LIKE",  2 , sqlite_like)
...
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36957287
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему изначально не получилось?
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36957868
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor_krПочему изначально не получилось?
Пробовал использовать ваш пример. У Вас там ошибка в LIKE функции. Плюс добавил перекодировку.
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36957887
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какая ошибка? Написали бы. :)
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36959661
KiV86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor_krКакая ошибка? Написали бы. :)
А выше, я для кого написал свою версию LIKE? :)
Были перепутаны параметры функции re.match и в шаблоне поиска указана лишняя скобка.
...
Рейтинг: 0 / 0
ссылка на вариант решения проблемы с кириллицей в SQLite
    #36959689
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KiV86,

Первым параметром должен быть template. Ваша функция не будет работать, если в ней будут использоваться служебные символы регулярных выражений. Я дополнил пример.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / ссылка на вариант решения проблемы с кириллицей в SQLite
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]