Re: [python] MySQL - nativní rozhraní pro Python

2008-07-02 Tema obsahu superman
Tak jsem ten _mysql wrapper důkladně zkoumal a on je tvrdě a jednorázově 
šitý na DB API. Není to zdaleka úplné API a v podstatě tam není 
prakticky nic moc navíc, co nejde přes DB API. Zkoumal jsem to včera a 
dnes, a není to bohužel použitelné, tedy je to použitelné - ale ne na 
rozšíření možností oproti DB API u MySQL databáze. Každopádně moc děkuji 
za tip.

Miloslav Ponkrác


Věroslav Kaplan napsal(a):
 2008/6/28 superman [EMAIL PROTECTED]:
   
 Dobrý den,

 když pracuji s MySQL v Pythonu, tak obvykle přes standardní DB API
 Pythonu. Bohužel MySQL je v leččems trochu nestandardní a řadu věcí je
 lépe dělat přes nativní API. Existuje pro Python nějaký wrapper pro
 nativní API, nebo jiná knihovna? Možná jsem špatně hledal, nevím...
 

  _mysql je wrapper okolo C API, oproti tomu MySQLdb je wrapper na
 _mysql, abi odpovídalo DB API.
 Na mém stroji to vypadá, že obsahují různé symboly. Kvalitu modulu
 _mysql neposoudím, protože do C API MySQL nevidím, ale třeba to k
 něčemu bude.

 --VK

 [EMAIL PROTECTED]:~$ python
   
 import _mysql
 dir(_mysql)
 
 ['DataError', 'DatabaseError', 'Error', 'IntegrityError',
 'InterfaceError', 'InternalError', 'MySQLError', 'NULL',
 'NotSupportedError', 'OperationalError', 'ProgrammingError',
 'Warning', '__doc__', '__file__', '__name__', '__version__',
 'connect', 'connection', 'debug', 'escape', 'escape_dict',
 'escape_sequence', 'escape_string', 'get_client_info', 'result',
 'server_end', 'server_init', 'string_literal', 'thread_safe',
 'version_info']
   
 import MySQLdb
 dir(MySQLdb)
 
 ['BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'DATETIME',
 'DBAPISet', 'DataError', 'DatabaseError', 'Date', 'DateFromTicks',
 'Error', 'FIELD_TYPE', 'ImmutableSet', 'IntegrityError',
 'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'ROWID',
 'STRING', 'TIME', 'TIMESTAMP', 'Time', 'TimeFromTicks', 'Timestamp',
 'TimestampFromTicks', 'Warning', '__all__', '__author__',
 '__builtins__', '__doc__', '__file__', '__name__', '__path__',
 '__revision__', '__version__', '_mysql', 'apilevel', 'connect',
 'connection', 'constants', 'debug', 'escape', 'escape_dict',
 'escape_sequence', 'escape_string', 'get_client_info', 'paramstyle',
 'release', 'result', 'server_end', 'server_init', 'string_literal',
 'thread_safe', 'threadsafety', 'times', 'version_info']
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python


   

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu azurIt
Ked ste sa uz o tomto tak rozpisali, tak prihodim jednu otazku aj ja.

Dost by ma zaujimalo ako sa s tymto daju robit zlozitejsie SQL dotazy, napr. 
nejake JOINy a podobne. Moc si to neviem predstavit.


-Pôvodná správa-
Od: Jan Bednařk [mailto:[EMAIL PROTECTED]
Komu: Konference PyCZ python@py.cz
Predmet: Re: [python]  MySQL - nativní rozhraní pro Python


2008/6/29 zu1234 [EMAIL PROTECTED]:
 Doufám že to někdo nevezme jako provokaci, ale opravdu
 by mi občas bodlo dostat se prostě do obrazu.

 Takže, byl by někdo ochotný obeznámit nás začátečníky s pojmy jako je
 SQLAlchemy a Django. Ale prosím opět polopatě a prakticky a lidsky.

 ZU

SQLAlchemy je aplikace, která ti umožní pracovat s tabulkami a záznamy
v databázi jako s běžnými objekty. Je určena pro integraci do jiných
aplikací, jako databázová vrstva. Nemusíš tak být odborník na SQL, aby
jsi mohl jednoduše a pohodlně pracovat s databází, teoreticky ani
nemusíš vědět, jak databáze fungují a co to SQL je. Koukni na
http://www.sqlalchemy.org/docs/05/ormtutorial.html a pochopíš, oč jde.

Django je RAD (Rapid Application Development) framework pro tvorbu
internetových aplikací. Funguje na principu MTV = Model Template View.
V první úrovni - Model - nadefinuješ modely. To jsou třídy
reprezentující tabulky v databázi a jejich závislosti a pak s nimi
pracuješ jako s objekty. Je to hodně podobné jako ta SQLAlchemy s
hlavním rozdílem v tom, že nedefinuješ jen typické datové typy
(varchar, int, atd.), ale můžeš použít i speciální jako EmailField,
IPAddressField, apod., které jsou v databázi uloženy třeba jako
obyčejný varchar, ale při práci mají speciální schopnosti, jako
třeba že ten EmailField při přiřazení kontroluje, zda je hodnota
platná e-mailová adresa. Teď trochu odbočím, ale musím prozradit jednu
z bezkonkurenčních (pokud jsem dobře informován) výhod Djanga oproti
jiným webovým frameworkům, a tou je automaticky generovaná
administrace. Na základě zadefinovaných modelů generuje velmi
propracované administrační rozhraní. Proto je tam taky spousta různých
datových typů, které ve výsledku mají vliv jen na chování té
administrace (různé formulářové prvky s JS/AJAX vylepšeními). A když
jsou nadefinované modely, přide na řadu část View. To znamená
nadefinovat šablony pro URL a k nim odpovídající view funkce, které se
mají zavolat (dle potřeby s parametry získanými z URL). Tady je to
hlavně o hraní s objekty modelů. Ve view získáš potřebná data, která
se zpracují v poslední části - Template. Template jsou (X)HTML (nebo
XML, nebo jakékoliv jiné) soubory, které obsahují speciální značky,
které Django nahradí hodnotou z view. Pole hodnot vypíše cyklem.
Aplikuje na hodnoty různé výstupní filtry třeba na pěkné zobrazení
data či zaokrouhlení měny. A tak podobně. Je toho spousta, co by šlo o
Djangu napsat, doporučuji ale rovnou zkusit. Je to zábava s ním
pracovat.

Ještě jsem si vzpoměl na jedno video z nějaké přednášky o Djangu,
které stojí za to shlédnout
http://video.google.com/videoplay?docid=-70449010942275062q=djangoei=7mhpSMG7Jpyc2wLx8dyoCg

Honza
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu Tomas Brabenec
Já myslím, že toto zase není třeba vysvětlovat.

Zadej si do Google
Django: 1. odkaz: http://www.djangoproject.com/
SQLAlchemy: 1. odkaz: http://www.sqlalchemy.org/

a myslím, že číst už umíš.

Tomas


On 29.6.2008 22:33, zu1234 wrote:
 Doufám že to někdo nevezme jako provokaci, ale opravdu
 by mi občas bodlo dostat se prostě do obrazu.

 Takže, byl by někdo ochotný obeznámit nás začátečníky s pojmy jako je
 SQLAlchemy a Django. Ale prosím opět polopatě a prakticky a lidsky.

 ZU




 Jan Bednařík napsal(a):
   
 2008/6/29 Jirka Vejrazka [EMAIL PROTECTED]:
 
  Možná to k ničemu nebude, ale přihodím trošku do mlýna :-)

  Momentálně na jednom projektu ke zjednodušení práce s databází
 (konkrétně MySQL) používám Django. Je sice určené na vývoj webových
 aplikací, ale vrstva která se stará o databáze je pro mé účely
 vyhovující a zbytek frameworku prostě ignoruju.

  Třeba to pomůže...

Jirka
   
 Na to bych použil spíš SQLAlchemy, ale i ořezané Django může být
 příjemné řešení.

 Honza
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python

 
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python
   
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu Tomas Brabenec
Tady je ukazka z dokumentace: 
http://www.sqlalchemy.org/docs/05/documentation.html#datamapping_joins

Nebo muzes proste delat standardni SQL funkce bez tech vopicek.

Cili nejjednoduseji treba takhle:

from sqlalchemy import create_engine
dbe = create_engine('sqlite:///:memory:', echo=True)
db = dbe.connect()
vysledek = db.execute(LIBOVOLNY SQL DOTAZ).fetchone()


Opet vse viz dokumentace.

Tomas



On 1.7.2008 9:10, azurIt wrote:
 Ked ste sa uz o tomto tak rozpisali, tak prihodim jednu otazku aj ja.

 Dost by ma zaujimalo ako sa s tymto daju robit zlozitejsie SQL dotazy, 
 napr. nejake JOINy a podobne. Moc si to neviem predstavit.


 -Pôvodná správa-
 Od: Jan Bednařk [mailto:[EMAIL PROTECTED]
 Komu: Konference PyCZ python@py.cz
 Predmet: Re: [python] MySQL - nativní rozhraní pro Python


 2008/6/29 zu1234 [EMAIL PROTECTED]:
 Doufám že to někdo nevezme jako provokaci, ale opravdu
 by mi občas bodlo dostat se prostě do obrazu.

 Takže, byl by někdo ochotný obeznámit nás začátečníky s pojmy jako je
 SQLAlchemy a Django. Ale prosím opět polopatě a prakticky a lidsky.

 ZU
 SQLAlchemy je aplikace, která ti umožní pracovat s tabulkami a záznamy
 v databázi jako s běžnými objekty. Je určena pro integraci do jiných
 aplikací, jako databázová vrstva. Nemusíš tak být odborník na SQL, aby
 jsi mohl jednoduše a pohodlně pracovat s databází, teoreticky ani
 nemusíš vědět, jak databáze fungují a co to SQL je. Koukni na
 http://www.sqlalchemy.org/docs/05/ormtutorial.html a pochopíš, oč jde.

 Django je RAD (Rapid Application Development) framework pro tvorbu
 internetových aplikací. Funguje na principu MTV = Model Template View.
 V první úrovni - Model - nadefinuješ modely. To jsou třídy
 reprezentující tabulky v databázi a jejich závislosti a pak s nimi
 pracuješ jako s objekty. Je to hodně podobné jako ta SQLAlchemy s
 hlavním rozdílem v tom, že nedefinuješ jen typické datové typy
 (varchar, int, atd.), ale můžeš použít i speciální jako EmailField,
 IPAddressField, apod., které jsou v databázi uloženy třeba jako
 obyčejný varchar, ale při práci mají speciální schopnosti, jako
 třeba že ten EmailField při přiřazení kontroluje, zda je hodnota
 platná e-mailová adresa. Teď trochu odbočím, ale musím prozradit jednu
 z bezkonkurenčních (pokud jsem dobře informován) výhod Djanga oproti
 jiným webovým frameworkům, a tou je automaticky generovaná
 administrace. Na základě zadefinovaných modelů generuje velmi
 propracované administrační rozhraní. Proto je tam taky spousta různých
 datových typů, které ve výsledku mají vliv jen na chování té
 administrace (různé formulářové prvky s JS/AJAX vylepšeními). A když
 jsou nadefinované modely, přide na řadu část View. To znamená
 nadefinovat šablony pro URL a k nim odpovídající view funkce, které se
 mají zavolat (dle potřeby s parametry získanými z URL). Tady je to
 hlavně o hraní s objekty modelů. Ve view získáš potřebná data, která
 se zpracují v poslední části - Template. Template jsou (X)HTML (nebo
 XML, nebo jakékoliv jiné) soubory, které obsahují speciální značky,
 které Django nahradí hodnotou z view. Pole hodnot vypíše cyklem.
 Aplikuje na hodnoty různé výstupní filtry třeba na pěkné zobrazení
 data či zaokrouhlení měny. A tak podobně. Je toho spousta, co by šlo o
 Djangu napsat, doporučuji ale rovnou zkusit. Je to zábava s ním
 pracovat.

 Ještě jsem si vzpoměl na jedno video z nějaké přednášky o Djangu,
 které stojí za to shlédnout
 http://video.google.com/videoplay?docid=-70449010942275062q=djangoei=7mhpSMG7Jpyc2wLx8dyoCg

 Honza
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python

 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu slush
Vzpomínám si, jak jsme měřili síly já (SQL) a kolega (Django db vrstva) na
jenom praktickém příkladě - měli jsme jako vstup cca 10 vzájemně provázaných
tabulek (násobné M:N) a cílem bylo získat dataset pro vyrenderování webové
stránky.

Kolega, nadšen jednoduchostí objektoveho pristupu k databazi a bez
hlubsich znalosti SQL udelal dotaz, ktery nad realnymi daty trval cca 16-20
sekund. Ja za pomoci SQL udelal dotaz, ktery generoval dataset cca 200-300
milisekund.

Nakonec jsme společnými silami i to Django dotlačili do podobné výkonnosti
jako čisté SQL, ale znamenalo to nejen podrobně znát, jak relační stroje
fungují, ale i pro mě dost speciální formát dotazování se objektovým
způsobem. Django way jsme nakonec ponechali kvůli kompatibilitě s datovým
modelem (v případě rozšíření datového modelu by se musely SQL příkazy
přepsat), ale důrazně varuji před přístupem nemusím znát relační databáze,
stačí mi objektový wrapper.

Marek

2008/7/1 Jan Bednařík [EMAIL PROTECTED]:

 aplikací, jako databázová vrstva. Nemusíš tak být odborník na SQL, aby
 jsi mohl jednoduše a pohodlně pracovat s databází, teoreticky ani
 nemusíš vědět, jak databáze fungují a co to SQL je.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu Jirka Vejrazka
 Kolega, nadšen jednoduchostí objektoveho pristupu k databazi a bez
 hlubsich znalosti SQL udelal dotaz, ktery nad realnymi daty trval cca 16-20
 sekund. Ja za pomoci SQL udelal dotaz, ktery generoval dataset cca 200-300
 milisekund.

  Souhlea, myslim ze nikdo neceka ze jakykoli framework bude stejne
rychly a efektivni jako dobre napsane SQL. Zvlast pokud je to SQL
(ne)zdrave vylepsene desitkami az stovkami hintu :)

  Pokud potrebuju pracovat s velkym mnozstvim dat (warehouse) a nebo
potrebuju vyzdimat posledni kousek rychlosti z databaze (OTLP), pak se
_dobre_ naucim SQL (a PL/SQL nebo T-SQL) a optimalizaci. Kdyz budu
potrebovat udelat webovou aplikaci ktera pouziva databazi jako neco
kam hodim data a pak je tam relativne rychle najdu a ma tam svych 25
tabulek z nichz kazda ma max 8 sloupcu (a jsou celkem malo provazane),
klidne sahnu po SQLAlchemy / Django / Pylons / TurboGears / .../ RoR
(at nemluvime jenom o Pythonu ;-)

Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu Jirka Vejrazka
 Dost by ma zaujimalo ako sa s tymto daju robit zlozitejsie SQL dotazy, napr. 
 nejake JOINy a podobne. Moc si to neviem predstavit.

  Uz to tady padlo, ale hodim link na tu konkretni stranku s dokumentaci:

http://www.djangoproject.com/documentation/db-api/

Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu zu1234
Pane Bednařík - super odpověď!!!
Moc Vám děkuji.

ZU

Jan Bednařík napsal(a):
 2008/6/29 zu1234 [EMAIL PROTECTED]:
 Doufám že to někdo nevezme jako provokaci, ale opravdu
 by mi občas bodlo dostat se prostě do obrazu.

 Takže, byl by někdo ochotný obeznámit nás začátečníky s pojmy jako je
 SQLAlchemy a Django. Ale prosím opět polopatě a prakticky a lidsky.

 ZU
 
 SQLAlchemy je aplikace, která ti umožní pracovat s tabulkami a záznamy
 v databázi jako s běžnými objekty. Je určena pro integraci do jiných
 aplikací, jako databázová vrstva. Nemusíš tak být odborník na SQL, aby
 jsi mohl jednoduše a pohodlně pracovat s databází, teoreticky ani
 nemusíš vědět, jak databáze fungují a co to SQL je. Koukni na
 http://www.sqlalchemy.org/docs/05/ormtutorial.html a pochopíš, oč jde.
 
 Django je RAD (Rapid Application Development) framework pro tvorbu
 internetových aplikací. Funguje na principu MTV = Model Template View.
 V první úrovni - Model - nadefinuješ modely. To jsou třídy
 reprezentující tabulky v databázi a jejich závislosti a pak s nimi
 pracuješ jako s objekty. Je to hodně podobné jako ta SQLAlchemy s
 hlavním rozdílem v tom, že nedefinuješ jen typické datové typy
 (varchar, int, atd.), ale můžeš použít i speciální jako EmailField,
 IPAddressField, apod., které jsou v databázi uloženy třeba jako
 obyčejný varchar, ale při práci mají speciální schopnosti, jako
 třeba že ten EmailField při přiřazení kontroluje, zda je hodnota
 platná e-mailová adresa. Teď trochu odbočím, ale musím prozradit jednu
 z bezkonkurenčních (pokud jsem dobře informován) výhod Djanga oproti
 jiným webovým frameworkům, a tou je automaticky generovaná
 administrace. Na základě zadefinovaných modelů generuje velmi
 propracované administrační rozhraní. Proto je tam taky spousta různých
 datových typů, které ve výsledku mají vliv jen na chování té
 administrace (různé formulářové prvky s JS/AJAX vylepšeními). A když
 jsou nadefinované modely, přide na řadu část View. To znamená
 nadefinovat šablony pro URL a k nim odpovídající view funkce, které se
 mají zavolat (dle potřeby s parametry získanými z URL). Tady je to
 hlavně o hraní s objekty modelů. Ve view získáš potřebná data, která
 se zpracují v poslední části - Template. Template jsou (X)HTML (nebo
 XML, nebo jakékoliv jiné) soubory, které obsahují speciální značky,
 které Django nahradí hodnotou z view. Pole hodnot vypíše cyklem.
 Aplikuje na hodnoty různé výstupní filtry třeba na pěkné zobrazení
 data či zaokrouhlení měny. A tak podobně. Je toho spousta, co by šlo o
 Djangu napsat, doporučuji ale rovnou zkusit. Je to zábava s ním
 pracovat.
 
 Ještě jsem si vzpoměl na jedno video z nějaké přednášky o Djangu,
 které stojí za to shlédnout
 http://video.google.com/videoplay?docid=-70449010942275062q=djangoei=7mhpSMG7Jpyc2wLx8dyoCg
 
 Honza
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu superman
On je základní problém, že databáze jsou relační, zatímco neustále se 
různé frameworky snaží z toho udělat objektový přístup. A rozdíl mezi 
těmito dvěma pojetí je tak značný, že objektový přístup nemůže být 
efektivní.

Ale zase - každý luxus něco stojí a je třeba vědět, zda se vyplatí, nebo 
ne. U objektového přístupu k relačním databázím je ten luxus (ztráta 
rychlosti) velmi značný, a v zásadě se vyplatí jen tehdy, pokud a) máte 
dostatečnou rezervu ve výkonu databáze, b) honíte tam přímo data z 
jednotlivých tabulek, v krajním případě dvou přes cizí klíč.

Když to tak sleduji (o SQLAlchemy ani Django jsem nevěděl, ale studoval 
jsem), tak se téměř nikomu tento převod, kdy se na relační databázi 
dávám nějakým objektovým pohledem přes univerzální framework moc 
nepovedl. Přiznám se sám, že asi to chce ten OOP interface vymyslet 
jinak - to je můj vnitřní silný pocit. Na druhé straně musím uznat, že 
pro jednoduché sáhnutí do tabulky je to velmi luxusní a dostačující.

On totiž SQL jazyk je dost schopný a různorodý a jdou tím až 
neuvěřitelné zázraky. A nedokážu si dost dobře představit, že bych přes 
framework hodil třeba to, co jsem teď stvořil (předem upozorňuji, že pro 
databázi jde o velmi efektivní dotaz, který zpracuje v zanedbatelném čase):

SELECT plant_id,name,(SELECT name FROM plant_name AS n WHERE 
n.plant_id=boss.plant_id AND language='lt' ORDER BY priority,type LIMIT 
1) AS lt_name,(SELECT GROUP_CONCAT(o.cs_name ORDER BY 
o.astrological_object_id SEPARATOR ',') FROM plant_astrological_object 
AS o WHERE o.astrological_object_id IN  (SELECT astrological_object_id 
FROM plant_mn_object_plant AS rel WHERE rel.plant_id=boss.plant_id)) AS 
objects FROM plant_name AS boss WHERE fulltext_name LIKE '%' AND 
language IN ('cs') ORDER BY name COLLATE utf8_czech_ci

Přitom jde o velmi jednoduchý SQL dotaz, a asi bych si nedokázal 
představit jak bych to nacpal přes framework.

Obrovská výhoda frameworků ale je - a to je jejich neskutečně silná 
stránka, která se nedá pominout - že jsou nezávislé na konkrétním 
databázovém stroji. Prostě znelíbí se vám databáze XY, tak jí prostě 
vyměníte za jinou, a z hlediska aplikace se nic nemění. Všechny 
závislosti na konkrétní databázi vyřídí framework sám - a kvůli tomu se 
také velmi tyto abstrakční vrstvy používají. To je velmi častý důvod 
jejich nasazení. Platí se za to ovšem ztrátou výkonu a někdy dost 
značnou neefektivností ve složitějších datových případech.

Miloslav Ponkrác


Jirka Vejrazka napsal(a):
 Kolega, nadšen jednoduchostí objektoveho pristupu k databazi a bez
 hlubsich znalosti SQL udelal dotaz, ktery nad realnymi daty trval cca 16-20
 sekund. Ja za pomoci SQL udelal dotaz, ktery generoval dataset cca 200-300
 milisekund.
 

   Souhlea, myslim ze nikdo neceka ze jakykoli framework bude stejne
 rychly a efektivni jako dobre napsane SQL. Zvlast pokud je to SQL
 (ne)zdrave vylepsene desitkami az stovkami hintu :)

   Pokud potrebuju pracovat s velkym mnozstvim dat (warehouse) a nebo
 potrebuju vyzdimat posledni kousek rychlosti z databaze (OTLP), pak se
 _dobre_ naucim SQL (a PL/SQL nebo T-SQL) a optimalizaci. Kdyz budu
 potrebovat udelat webovou aplikaci ktera pouziva databazi jako neco
 kam hodim data a pak je tam relativne rychle najdu a ma tam svych 25
 tabulek z nichz kazda ma max 8 sloupcu (a jsou celkem malo provazane),
 klidne sahnu po SQLAlchemy / Django / Pylons / TurboGears / .../ RoR
 (at nemluvime jenom o Pythonu ;-)

 Jirka
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python


   

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu slush

   Souhlea, myslim ze nikdo neceka ze jakykoli framework bude stejne
 rychly a efektivni jako dobre napsane SQL.


Na druhou stranu ocekavam, ze standardni webova aplikace (a toto byla
standardni webova aplikace, zadny DWH) bude mit standardni dobu odezvy.

Ja nehazim spinu na Django, sam ho a jeho databazovou vrstvu pouzivam. Jen
pripominam, ze i v dobe high level jazyků a nástrojů je potřeba znát
background a principy. Ani dnes bez toho nejde napsat kloudná webová
aplikace.

Marek
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] MySQL - nativní rozhraní pro Python

2008-07-01 Tema obsahu Jirka Vejrazka
 Ja nehazim spinu na Django, sam ho a jeho databazovou vrstvu pouzivam. Jen
 pripominam, ze i v dobe high level jazyků a nástrojů je potřeba znát
 background a principy. Ani dnes bez toho nejde napsat kloudná webová
 aplikace.

  Kde to muzu podepsat? ;-)

Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu zu1234
Mohl by, prosím, někdo začátečníkovi vysvětlit po-lopatě pojem 'wraper'.

DB API chápu jako balík stejných fcí pro práci nad 'jakýmkoliv' 
databázovým strojem.

ZU

Věroslav Kaplan napsal(a):
 2008/6/28 superman [EMAIL PROTECTED]:
 Dobrý den,

 když pracuji s MySQL v Pythonu, tak obvykle přes standardní DB API
 Pythonu. Bohužel MySQL je v leččems trochu nestandardní a řadu věcí je
 lépe dělat přes nativní API. Existuje pro Python nějaký wrapper pro
 nativní API, nebo jiná knihovna? Možná jsem špatně hledal, nevím...
 
  _mysql je wrapper okolo C API, oproti tomu MySQLdb je wrapper na
 _mysql, abi odpovídalo DB API.
 Na mém stroji to vypadá, že obsahují různé symboly. Kvalitu modulu
 _mysql neposoudím, protože do C API MySQL nevidím, ale třeba to k
 něčemu bude.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu zu1234
To víte že to pomohlo - děkuji za velmi pěkné vysvětlení!!

Takže hotový program v pythonu se skládá z python-jazyka a různých 
wrapperů pro to, co vlastní python neumí.

Normálně bych tomu řekl mezi-ksicht alias interface.

Díky!
ZU



Filip Štědronský napsal(a):
 On Po, čen 30, 2008 at 08:04:02 +0200, zu1234 wrote:
 Mohl by, prosím, někdo začátečníkovi vysvětlit po-lopatě pojem 'wraper'.
 Dobrý den,
 
 wrapper je doslava přeloženo obal, tedy sada funkcí/
 tříd/metod/čehokoliv, která zapouzdřuje jinou sadu funkcí
 /metod/tříd/čehokoliv, poskytuje k ní jiné rozhraní. Je
 běžné, že když se píší moduly pro Python zapouzdřující
 existující (Cčkové, nativní, kompilované) knihovny, jako
 je GTK, MySQL client library, etc., napíše se v C (pomocí
 Python-C API, což je nevyhnutelné, neb není jiný způsob,
 jak propojit dynamický svět Pythonu s kompilovaným Cčkovým
 okolím jen jednoduchý obal Cčkovských funkcí, často 1:1
 mapování C funkcí na Pythonské, protože psát moduly v C
 není dvakrát jednoduché.
 
 Ale jakmile je rozhraní knihovny jednou Pythonu 
 zpřístupněno (byť ve své Cčkové ošklivosti) pomocí tohoto 
 wrapperu, který obaluje původní funkce určitými rozhraními
 potřebnými k tomu, aby je šlo volat z Pythonu, není 
 problém napsat další, vysokoúrovňový, objektový obal přímo
 v Pythonu (to již je snadné), který zapouzdřuje před 
 uživatelem tyto jednoduché funkce a nabízí konzistentní a
 příjemné rozhraní. Taktéž se toho používá pro skrývání
 implementačních rozdílů (stejné rozhraní postavené nad
 několika různými moduly, např. zmíněné DB API)
 
 Doufám, že to pomůže.
 Filip Štědronský
 
 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu superman
Wrapper a interface je obrovský rozdíl! Interface je jen způsob 
komunikace mezi dvěma systémy, tedy dá se říct virtuální popis toho, 
jak se bude komunikovat. Wrapper je zase převodník, nebo jak se v hw 
světě říká redukce z jednoho interface na jiný interface, a není to 
popis, ale implementace - tedy skutečné provedení.

Miloslav Ponkrác

P.S.: Děkuji za odpovědi, právě jsem si je pročetl a budu zkoušet, a dám 
vědět :-)


zu1234 napsal(a):
 To víte že to pomohlo - děkuji za velmi pěkné vysvětlení!!

 Takže hotový program v pythonu se skládá z python-jazyka a různých 
 wrapperů pro to, co vlastní python neumí.

 Normálně bych tomu řekl mezi-ksicht alias interface.

 Díky!
 ZU

   

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu zu1234
Ano, pane Ponkác,
vaše definice je přesná.

ZU

superman napsal(a):
 Wrapper a interface je obrovský rozdíl! Interface je jen způsob 
 komunikace mezi dvěma systémy, tedy dá se říct virtuální popis toho, 
 jak se bude komunikovat. Wrapper je zase převodník, nebo jak se v hw 
 světě říká redukce z jednoho interface na jiný interface, a není to 
 popis, ale implementace - tedy skutečné provedení.
 
 Miloslav Ponkrác
 
 P.S.: Děkuji za odpovědi, právě jsem si je pročetl a budu zkoušet, a dám 
 vědět :-)
 
 
 zu1234 napsal(a):
 To víte že to pomohlo - děkuji za velmi pěkné vysvětlení!!

 Takže hotový program v pythonu se skládá z python-jazyka a různých 
 wrapperů pro to, co vlastní python neumí.

 Normálně bych tomu řekl mezi-ksicht alias interface.

 Díky!
 ZU

   
 
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu Jan Bednařík
2008/6/29 Jirka Vejrazka [EMAIL PROTECTED]:

  Možná to k ničemu nebude, ale přihodím trošku do mlýna :-)

  Momentálně na jednom projektu ke zjednodušení práce s databází
 (konkrétně MySQL) používám Django. Je sice určené na vývoj webových
 aplikací, ale vrstva která se stará o databáze je pro mé účely
 vyhovující a zbytek frameworku prostě ignoruju.

  Třeba to pomůže...

Jirka

Na to bych použil spíš SQLAlchemy, ale i ořezané Django může být
příjemné řešení.

Honza
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu zu1234
Doufám že to někdo nevezme jako provokaci, ale opravdu
by mi občas bodlo dostat se prostě do obrazu.

Takže, byl by někdo ochotný obeznámit nás začátečníky s pojmy jako je 
SQLAlchemy a Django. Ale prosím opět polopatě a prakticky a lidsky.

ZU




Jan Bednařík napsal(a):
 2008/6/29 Jirka Vejrazka [EMAIL PROTECTED]:
  Možná to k ničemu nebude, ale přihodím trošku do mlýna :-)

  Momentálně na jednom projektu ke zjednodušení práce s databází
 (konkrétně MySQL) používám Django. Je sice určené na vývoj webových
 aplikací, ale vrstva která se stará o databáze je pro mé účely
 vyhovující a zbytek frameworku prostě ignoruju.

  Třeba to pomůže...

Jirka
 
 Na to bych použil spíš SQLAlchemy, ale i ořezané Django může být
 příjemné řešení.
 
 Honza
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu Jirka Vejrazka
O SQLAlchemy nic psat nemuzu, nikdy jsem s tim nepracoval.


Django je framework pro psani webovych aplikaci (jeden z mnoha), ktery
mimo jine obsahuje funkcnost pro praci s databazi pythonovskym
zpusobem.
Tj. misto toho abych pracoval primo v databazovem jazyce SQL a psal:
  SELECT ulice FROM adresy WHERE ulice LIKE '%Sokolska%'
nebo
  INSERT INTO adresy (ulice) VALUES ('Sokolska')
muzu pracovat primo s objekty v Pythonu, tj. pouziju:
 from app.models import Adresa
 sokolska = Adresa.objects.filter(ulice__contains='Sokolska')
 prvni_sokolska = sokolska[0]
 posledni_sokolska = sokolska[-1]

Pokud chci neco ulozit do databaze, nemusim resit na urovni
databazoveho SQL jestli budu delat INSERT nebo UPDATE, proste vezmu
odpovidajici objekt a zavolam jeho metodu save()
 prvni_sokolska.ulice = 'Sokolska_zmenena'
 prvni_sokolska.save()

(tohle jsou _hodne_ zjednodusene priklady, pochopitelne)

Django umi pracovat s ruznymi databazemi na pozadi (predpokladam ze
SQLAlchemy taky). Pokud byste chteli pouzit Django jenom pro
zjednoduseni prace s databazi, je to asi spatny napad (ja to tak
delam, ale mam i jine duvody). Pokud byste chteli vyvijed webovou
aplikaci v Pythonu, stoji Django rozhodne za zvazeni (ale neni to
jedina moznost).

Vice se da najit na http://www.djangoproject.com/documentation/ nebo
na http://www.djangobook.com/en/1.0/ (ta se da koupit i v papirove
podobe). I u nas se par lidi pouzivajicich Django najde, viz
http://djangopeople.net/cz/.

Tak, a ted si pripadam jako bych Django prodaval a mel z toho provize ;-)

   Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-30 Tema obsahu Jan Bednařík
2008/6/29 zu1234 [EMAIL PROTECTED]:
 Doufám že to někdo nevezme jako provokaci, ale opravdu
 by mi občas bodlo dostat se prostě do obrazu.

 Takže, byl by někdo ochotný obeznámit nás začátečníky s pojmy jako je
 SQLAlchemy a Django. Ale prosím opět polopatě a prakticky a lidsky.

 ZU

SQLAlchemy je aplikace, která ti umožní pracovat s tabulkami a záznamy
v databázi jako s běžnými objekty. Je určena pro integraci do jiných
aplikací, jako databázová vrstva. Nemusíš tak být odborník na SQL, aby
jsi mohl jednoduše a pohodlně pracovat s databází, teoreticky ani
nemusíš vědět, jak databáze fungují a co to SQL je. Koukni na
http://www.sqlalchemy.org/docs/05/ormtutorial.html a pochopíš, oč jde.

Django je RAD (Rapid Application Development) framework pro tvorbu
internetových aplikací. Funguje na principu MTV = Model Template View.
V první úrovni - Model - nadefinuješ modely. To jsou třídy
reprezentující tabulky v databázi a jejich závislosti a pak s nimi
pracuješ jako s objekty. Je to hodně podobné jako ta SQLAlchemy s
hlavním rozdílem v tom, že nedefinuješ jen typické datové typy
(varchar, int, atd.), ale můžeš použít i speciální jako EmailField,
IPAddressField, apod., které jsou v databázi uloženy třeba jako
obyčejný varchar, ale při práci mají speciální schopnosti, jako
třeba že ten EmailField při přiřazení kontroluje, zda je hodnota
platná e-mailová adresa. Teď trochu odbočím, ale musím prozradit jednu
z bezkonkurenčních (pokud jsem dobře informován) výhod Djanga oproti
jiným webovým frameworkům, a tou je automaticky generovaná
administrace. Na základě zadefinovaných modelů generuje velmi
propracované administrační rozhraní. Proto je tam taky spousta různých
datových typů, které ve výsledku mají vliv jen na chování té
administrace (různé formulářové prvky s JS/AJAX vylepšeními). A když
jsou nadefinované modely, přide na řadu část View. To znamená
nadefinovat šablony pro URL a k nim odpovídající view funkce, které se
mají zavolat (dle potřeby s parametry získanými z URL). Tady je to
hlavně o hraní s objekty modelů. Ve view získáš potřebná data, která
se zpracují v poslední části - Template. Template jsou (X)HTML (nebo
XML, nebo jakékoliv jiné) soubory, které obsahují speciální značky,
které Django nahradí hodnotou z view. Pole hodnot vypíše cyklem.
Aplikuje na hodnoty různé výstupní filtry třeba na pěkné zobrazení
data či zaokrouhlení měny. A tak podobně. Je toho spousta, co by šlo o
Djangu napsat, doporučuji ale rovnou zkusit. Je to zábava s ním
pracovat.

Ještě jsem si vzpoměl na jedno video z nějaké přednášky o Djangu,
které stojí za to shlédnout
http://video.google.com/videoplay?docid=-70449010942275062q=djangoei=7mhpSMG7Jpyc2wLx8dyoCg

Honza
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-29 Tema obsahu Věroslav Kaplan
2008/6/28 superman [EMAIL PROTECTED]:
 Dobrý den,

 když pracuji s MySQL v Pythonu, tak obvykle přes standardní DB API
 Pythonu. Bohužel MySQL je v leččems trochu nestandardní a řadu věcí je
 lépe dělat přes nativní API. Existuje pro Python nějaký wrapper pro
 nativní API, nebo jiná knihovna? Možná jsem špatně hledal, nevím...

 _mysql je wrapper okolo C API, oproti tomu MySQLdb je wrapper na
_mysql, abi odpovídalo DB API.
Na mém stroji to vypadá, že obsahují různé symboly. Kvalitu modulu
_mysql neposoudím, protože do C API MySQL nevidím, ale třeba to k
něčemu bude.

--VK

[EMAIL PROTECTED]:~$ python
 import _mysql
 dir(_mysql)
['DataError', 'DatabaseError', 'Error', 'IntegrityError',
'InterfaceError', 'InternalError', 'MySQLError', 'NULL',
'NotSupportedError', 'OperationalError', 'ProgrammingError',
'Warning', '__doc__', '__file__', '__name__', '__version__',
'connect', 'connection', 'debug', 'escape', 'escape_dict',
'escape_sequence', 'escape_string', 'get_client_info', 'result',
'server_end', 'server_init', 'string_literal', 'thread_safe',
'version_info']
 import MySQLdb
 dir(MySQLdb)
['BINARY', 'Binary', 'Connect', 'Connection', 'DATE', 'DATETIME',
'DBAPISet', 'DataError', 'DatabaseError', 'Date', 'DateFromTicks',
'Error', 'FIELD_TYPE', 'ImmutableSet', 'IntegrityError',
'InterfaceError', 'InternalError', 'MySQLError', 'NULL', 'NUMBER',
'NotSupportedError', 'OperationalError', 'ProgrammingError', 'ROWID',
'STRING', 'TIME', 'TIMESTAMP', 'Time', 'TimeFromTicks', 'Timestamp',
'TimestampFromTicks', 'Warning', '__all__', '__author__',
'__builtins__', '__doc__', '__file__', '__name__', '__path__',
'__revision__', '__version__', '_mysql', 'apilevel', 'connect',
'connection', 'constants', 'debug', 'escape', 'escape_dict',
'escape_sequence', 'escape_string', 'get_client_info', 'paramstyle',
'release', 'result', 'server_end', 'server_init', 'string_literal',
'thread_safe', 'threadsafety', 'times', 'version_info']
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-29 Tema obsahu Jirka Vejrazka
 když pracuji s MySQL v Pythonu, tak obvykle přes standardní DB API
 Pythonu. Bohužel MySQL je v leččems trochu nestandardní a řadu věcí je
 lépe dělat přes nativní API. Existuje pro Python nějaký wrapper pro
 nativní API, nebo jiná knihovna? Možná jsem špatně hledal, nevím...

 Možná to k ničemu nebude, ale přihodím trošku do mlýna :-)

 Momentálně na jednom projektu ke zjednodušení práce s databází
(konkrétně MySQL) používám Django. Je sice určené na vývoj webových
aplikací, ale vrstva která se stará o databáze je pro mé účely
vyhovující a zbytek frameworku prostě ignoruju.

  Třeba to pomůže...

Jirka
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] MySQL - nativní rozhraní pro Python

2008-06-28 Tema obsahu superman
Dobrý den,

když pracuji s MySQL v Pythonu, tak obvykle přes standardní DB API 
Pythonu. Bohužel MySQL je v leččems trochu nestandardní a řadu věcí je 
lépe dělat přes nativní API. Existuje pro Python nějaký wrapper pro 
nativní API, nebo jiná knihovna? Možná jsem špatně hledal, nevím...

Děkuji moc za každý podnět.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] MySQL - nativní rozhraní pro Python

2008-06-28 Tema obsahu Tomas Brabenec
http://sourceforge.net/projects/mysql-python

MySQL support for Python. MySQL versions 3.23-5.1; and Python versions 
2.3-2.5 are supported. MySQLdb is the Python DB API-2.0 interface.* 
_mysql is a low-level API similiar to the MySQL C API*. ZMySQLDA is a 
Database Adapter for Zope2.

Je to ono ?

Tomas


On 28.6.2008 13:34, superman wrote:
 Dobrý den,

 když pracuji s MySQL v Pythonu, tak obvykle přes standardní DB API
 Pythonu. Bohužel MySQL je v leččems trochu nestandardní a řadu věcí je
 lépe dělat přes nativní API. Existuje pro Python nějaký wrapper pro
 nativní API, nebo jiná knihovna? Možná jsem špatně hledal, nevím...

 Děkuji moc za každý podnět.
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python
   
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python