[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