Колационе секвенце¶
У систему SQLite Studio смо видели да се подешавањем колационе секвенце UNICODE постиже исправан поредак ниски које су записане коришћењем карактера ван табеле ASCII (пре свега латиничких и ћириличких карактера српског језика). Међутим, библиотека SQLite уграђена у програмски језик Python не пружа ту могућност и да би се у Python програмима постигао рад са овим карактерима потребно је уложити мало више труда и дефинисати функцију која ће се користити за поређење ниски. У свим програмима у наставку ћемо користити наредни блок програмског кода.
import locale
locale.setlocale(locale.LC_ALL, '')
def collate_UNICODE(str1, str2):
return locale.strcoll(str1, str2)
db_conn = sqlite3.connect(...)
db_conn.create_collation("UNICODE", collate_UNICODE)
...
Након отварања конекције ка бази података, позива се метода
create_collation
којом се каже да се за све колоне за које је у
SQLite бази података дефинисана колациона секвенца UNICODE
за
поређење ниски користи Python функција collate_UNICODE
. То је
функција коју сами дефинишемо и коју можемо да прилагодимо тако да
ради како год то нама одговара. Пошто желимо исправно поређење ниски
које садрже UNICODE карактере, употребићемо библиотечку подршку за
поређење таквих ниски, која долази у облику функције
locale.strcoll
. Пре позива ове функције потребно је извршити
локална (језичка и регионална) подешавања програма. Позивом
locale.setlocale(locale.LC_ALL, '')
се све врсте језичких и
регионалних подешавања програма преузимају из тренутних подешавања на
нивоу оперативног система. То радимо на самом почетку, одмах након
увоза модула locale
. Ако не желимо да зависимо од подешавања
оперативног система, тада можемо експлицитно подесити да се користи
српски језик и ћириличко писмо locale.setlocale(locale.LC_ALL,
'sr_RS')
.