[python] Je Python vhodny pro vyvoj databzovych aplikaci ?
Ivo Štolpa
pussa na pussa.cz
Neděle Září 19 12:31:56 CEST 2004
Miroslav Holeček napsal(a):
>předem se omlouvám , že obtěžuji začátečnickým dotazem. Zajímal by mě názor
>na použití jazyka Python pro vývoj desktopových databázových aplikací
>(jednouživatelských a provozovaných na systémech MS Windows). Základním
>požadavkem je spolehlivost na všech stávajících verzích Windows (W9x až
>WXP), tj. jednoduchá instalace (pouhým kopírováním), bezproblémová čeština,
>generování výstupů do XML souborů, ... Pokud se tím zabýváte, jste ochotni
>se podělit o zkušenosti, tj. jakou doporučujete databázi (SQLite ?), jakou
>knihovnu pro GUI (WX ?), jaké objekty pro práci s daty (SQLobjects ?), jak
>generujete EXE (pomocí PY2EXE ?) ? Předem děkuji za odpověď případně na
>odkazy k této problematice.
>
>
Python: Je až překvapivé s jakou lehkostí se v Pythonu dá řešit spousta
jinde zapeklitých úloh. Pro člověka jako já, který několik (14) let
programoval v Pacalu (a posléze v Delphi) sice nějakou dobu trvá něž si
zvykne na ty všudypřítomné n-tice, seznamy a slovníky. Ale posléze
zjistí, že jsou klíčem k úspěchu, že právě díky nim se spousta věcí dá
naprogramovat tak elegantně. Jednou jsem potřeboval, aby program ukládal
so souboru citlivá data a tak jsem se rozhodl to zakryptovat. Potřebné
hodnoty jsem zakryptoval pomocí md5 , uložil do seznamu. Seznam pomocí
pickle uložil na disk. Celé to má sedm řádků. Zpětné načítání při startu
má ještě o řádek méně. Zkuste něco podobného napsat jinde.
GUI: Pokud chcete napsat aplikaci, která bude používána čistě pod
Windows, pak asi wx jsou rozumné rozhodnutí. Mě se jen nelíbí, jak
strašně nepythonovsky je proveden wrapper do Pythonu. Na můj vkus to moc
smrdí C++. Ale jinak je asi nejkomplexnější. Já se rozhodl pro GTK+,
které sice není tak komplexní, ale mě se líbí víc a já navíc mám
požadavek i na fungování pod Linuxem a tam je GTK+ přirozenější. Naopak
Qt není vhodné vůbec, protože pro Windows neexistuje GNU verze a musí
se kupovat za $1500, což je pro českého programátora smrtící částka.
Databáze: Pokud nemá být problém s řazením češtiny, pak vřele doporučuji
Firebird. Je to (snad) jediná databáze, kerá s tím nemá naprosto žádné
problémy. Existuje i embended varianta, která nepotřebuje samostatně
běřící server, ale k datů se přistupuje přes dll knihovnu. Databáze může
mít nastavenu například kódovou stránku (WIN1250) a collate (PXW_CSY).
Klient si pak nastaví svojí kódovou stránku (která nemusí být shodná s
kódovou stránkou databáze). Přičem, pokud je nastavena jiná, klient si
sám provádí automatickou konverzi. Tím je zabezpečeno to, že když se
připojím z Linuxu, můžu nastajit ISO8859_2 nebo UNICODE_FSS a výsledek
vidím česky. Co se týče té SQLite, tak ta s češtinou problémy má. Né s
ukládáním, protože je ochotná uložit cokoliv, ale česky setříděný seznam
záznamů z ní nedostanete. V nejnovější verzi je sice zavedeno COLLATE,
ale vnitřně je podporováno pouze binární řazení. Takže byste si musel
sám vytvořit funkce pro řazení.
Exe: Tady je asi jedno, jestli použijete Py2exe nebo Installer. Před pár
dny zde proběhla diskuse ohledně míry komprese, kde snad trochu lépe
vyšel Installer, ale to zřejmě záleží na tom, co balíte, jaké moduly
používáte, jestli balíte i nějaké binárky a obrázky a také jaké
procentní zastoupení tyto jednotlivé věci mají. Jinými slovy v dnešní
době osmdesátigigabajtových disků se nemá cenu zabývat rozdílem jednoho
nebo tří mega (výrobci tvrdí, že do pěti let se standardně bude prodávat
PC s diskem 400GB???). Promě bylo nejdůležitější to, že Install umí
vytvářet binárky i pro Linux a tak jsem (zatím) skončil u něj.
Závěr: Vše jsou to jen mé poznatky a má rozhodnutí na základě kritérií,
které se od těch Vašich lišila. Je tedy možné, že se nakonec rozhodnete
jinak. Je také dost pravděpodobné, že někdo jiný s mými závěry nebude
souhlasit. Na tom všem kolem Pythonu je krásné to, že vždy existuje
několik cest. To dokazuje i toto fórum, kde je ta různorodost patrná.
Ivo Štolpa
Další informace o konferenci Python