Найти - Пользователи
Полная версия: kinterbasdb и слова на русском в запросах
Начало » Базы данных » kinterbasdb и слова на русском в запросах
1
billy_bob
День добрый. Извините, если похожий вопрос уже был - через поиск не нашел.
Дело в следующем. Есть БД интербейсовская, использую ubuntu (UTF-8), firebird 2.1., kinterbasdb соответственно.
Для соединения используются следующие параметры.
self.con = k.connect(
host=None, database=DBFileName,
user='sysdba', password='masterkey',
dialect=3, charset='WIN1251'
)
это кусок функции поиска пациента.
SELECT = r"SELECT id, fio, sex FROM card WHERE fio LIKE '%" + str(patientName) + r"%'"
self.curs.execute(SELECT)
Проблема в том, что поиск по словам на английском и цифрам идет, а по русским словам нет. пустой ответ. Похоже charset='WIN1251' недостаточно и нужно еще вручную строки перекодировать, я правильно понимаю? Если да, то как лучше?

И еще, доп. вопрос, как сделать поиск регистронезависимым.
billy_bob
С регистронезависимостью разобрался, преобразовал строку к такому виду
SELECT = r"SELECT id, fio, sex FROM card WHERE lower(fio) LIKE '%" + patientName.lower() + r"%'"
осталось с русским додумать
billy_bob
Продолжение. Дело действительно в кодировках. После следующего костыля
patientName.lower().decode('utf-8').encode('cp1251')
все заработало. Вот только конструкция уж больно корявая. А напрямую 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