Portál AbcLinuxu, 8. května 2025 08:25
select firstname, lastname from students where grp='7a' order by lastname. Ovšem i přes nastavené locale (LC_ALL,LC_COLLATE oboje cs_CZ.UTF-8) se výsledek setřídí špatně, patrně podle unicode pozic: všecha akcentovaná písmena jsou na konci. Nevím, jestli je to problém v sqlite nebo v pythonu, řekl bych že v prvním. Sice si můžu výsledek dodatečně přerovnat v nějakém poli přes
pole.sort(lambda a,b: locale.strcoll(a,b))nebo
pole.sort(key=locale.strxfrm), ale to jaksi není ono. Ví někdo jak na to? Dík moc!
import locale locale.setlocale(locale.LC_ALL, '') ## LC_ALL=cs_CZ.UTF-8 [...] con.create_collation("lexical", locale.strcoll) con.execute("select firstname,lastname from students where grp='7a' order by lastname collate lexical"), případně vytváření tabulky uvést ke příslušným textovým sloupcům "COLLATE lexical". V každém skriptu je však třeba lexical znovu nadefinovat pomocí create_collation, neboť v databázi je uloženo jen její jméno. Omlouvám se za triviální dotaz i možná triviální odpověď, poprvé v životě si hraju s databází (asi ne naposled; je to mnohem lepší než mít všechno v asociativních polích a inkludovaných skriptech jako dosud
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.