[python] Je Python vhodny pro vyvoj databzovych aplikaci ?

Ivo Štolpa pussa na pussa.cz
Pondělí Září 20 09:07:07 CEST 2004


Teď nevím, jestli je to na mě? Pokud ano, pak musím říci, že Python jsem 
sledoval z úctivého povzdálí zhruba od roku 2000. Ale teprve poslední 
dva měsíce v něm programuji intenzivně. Samozřejmě  první otázku, kterou 
si kladu u každého prostředku pro vývoj aplikací, je: "Umí to všechno, 
co potřebuji?". Ještě na začátku léta jsem to nevěděl a proto jsem se 
rozhodl provést průzkum, abych Python na věčné časy zavrhl nebo naopak. 
Stal se onen opak. Z GUI jsem zkoušel pouze vestavěné Tk (fuj), wx (jde 
to) a GTK+. Ten poslední jsem si vybral, protože mi vyhovuje vzhled i 
způsob programování. Qt jsem vynechal kvůli licencování na Windows (prý 
se ale autoři chystají být k Windows vstřícnější, takže uvidím). Z 
databází jsem testoval Gadfly, SQLite, Metakit, MySQL a Firebird. Pouze 
poslední dvě nemají problémy s češtinou. MySQL ale nemá embended 
variantu pro jednouživatelské instalace a musí se tedy vždy instalovat 
server.  Firebird má nejlépe vyřešenu češtinu i české řazení a to i pro 
heterogenní sítě. Je také mnohem menší. Nešlo mě o to najít nejrychlejší 
databázi (to se porovnává nejčastěji) ale takovou, která nejlépe 
vyhovuje mým potřebám. Firebird jí je. Může být použita jako embended 
databáze, nebo jako samostatný server. Na Linuxu běží jako démon, na 
WindowsNT-XP jako služba a na Windows98 jako úloha. Vyzkoušel jsem 
všechno kromě embended (to mě ještě čeká).

Proti Delphi je s databázemi v Pythonu více práce, protože neexistují 
žádné datové komponenty, ale všechno si člověk musí obsloužit sám. Na 
druhou stranu program dělá přesně to, co si naprogramujete. Pokud si 
člověk odvodí své vlastní třídy a přidá do nich nějaké metody pro práci 
s daty, pak se dá program poskládat rychleji než v Delphi.

Poslední věcí jsou tiskové sestavy. Tady se dost mluví o report labu. 
Mám ho stažený i s dokumentací a musím ho prozkoumat, zda bude vyhovovat 
mým potřebám. Pokud ano, budu mít již vše, co potřebuji pro napsání 
databázové aplikace, která poběží jak na Windows, tak na Linuxu a co 
víc, klidně i křížem. Tedy jak server, tak klienti mohou běžet na 
kterékoliv platformě. Vyzkoušel jsem server na Linuxu a klienti na 
Linuxu a Windows(XP a 98) a naopak server na WindowsXP a klienti na 
Linuxu a Windows(XP a 98). A i tady čeština šlape jak hodinky.

Ještě nejsem zralý na nějakou ukázku, i když malou funkční část aplikace 
mám, ale zatím bych se styděl zveřejnit svůj pythonovský kód, protože se 
považuji za nováčka, který zatí dělá dost chyb (teda spíš ošklivostí). 
Když se podívám na kód psaný před čtrnácti dny, tak se zhrozím a 
přepisuji jej tak, že je z něj polovina řádků. Nedokážu si představit, 
jak by pohled na můj kód musel vyděsit ostříleného hada. Časem ale zcela 
určitě něco vypustím.

Ivo

Aleš Pavel napsal(a):

>Ahoj skvele a nechtel bys nas trochu do toho vyvoje db zapojit, ja
>ovladam slusne delphi a ruzne db, ale python je pro me novinka.
>Nemel bys ukazku?
>
>Diky
>_________________________________________
>Ales Pavel
>ICQ#: 44615538
>More ways to contact me: http://wwp.icq.com/44615538
>_________________________________________
>
>
>  
>
>>-----Original Message-----
>>From: python-bounces na py.cz [mailto:python-bounces na py.cz] On 
>>Behalf Of Ivo Štolpa
>>Sent: 19. září 2004 12:32
>>To: "Konference uživatelů Pythonu a spol."
>>Subject: Re: [python] Je Python vhodny pro vyvoj databzovych 
>>aplikaci ?
>>
>>
>>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
>>
>>_______________________________________________
>>python mailing list
>>python na py.cz
>>http://www.py.cz/mailman/listinfo/python
>>
>>    
>>
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>python mailing list
>python na py.cz
>http://www.py.cz/mailman/listinfo/python
>




Další informace o konferenci Python