Я нашел в документации peewee how to create custom collations, но мне не удалось найти, как использовать the built-in sqlite collating sequences.Использование COLLATE для запросов peewee
Хо, создаю ли я следующий вопрос в peewee (он является последним на вышеупомянутой странице документации sqlite)?
SELECT x FROM t1 ORDER BY c COLLATE NOCASE, x;
И как указать сортировку для индекса?
CREATE INDEX i1 ON t1(f1 COLLATE NOCASE);
EDIT
Ответ от coleifer рассматривается вопрос о запросе.
Для создания индекса я использую следующий трюк, который хорошо работает при создании индексов только один раз при запуске (например, в моем приложении).
Нечувствительный к регистру уникальный индекс в двух столбцах таблицы LockedFiles
предотвращает дублирование записей.
class LockedFiles(PeeweeModel):
folder = peewee.CharField(index=True)
file = peewee.CharField(index=True)
@classmethod
def custom_init(cls):
db.execute_sql('create unique index if not exists lockedfiles_unique '
'on lockedfiles(folder collate nocase, file collate nocase)', {})
def create_tables(drop_existing_tables):
for table in [LockedFiles, Model2, Model3]:
if drop_existing_tables:
table.drop_table(True)
table.create_table(True)
try:
table.custom_init()
except:
pass
create_tables(drop_existing_tables=False)
Я все еще застрял в части запроса. Я уже нашел обходное решение для части индекса. Я редактировал сообщение с подробностями. – stenci