Thread View: pl.comp.lang.python
10 messages
10 total messages
Started by Michal
Mon, 07 Dec 2009 18:22
uniwersalny modul dostepu do bazy danych
Author: Michal
Date: Mon, 07 Dec 2009 18:22
Date: Mon, 07 Dec 2009 18:22
9 lines
1222 bytes
1222 bytes
W c# jest modul dostepu do bazy danych, ktorego mozna uzyc do podlaczenia sie do dowolnej bazy danych(do ktorej jest sterownik) aby zmienic baze danych wystarczy zmienic connection string. Reszta kodu pozostaje taka sama. Czy w pythonie sa podobne rozwiazania? Jedyne jakie widzialem sa przeznaczone do konkretnych baz np postegresql, mysql. Takie rozwiazanie stwaraza problem, poniewaz jak zmieni sie baza to zmienic trzeba kupe kodu. --
Re: uniwersalny modul dostepu do bazy danych
Author: Jan Koprowski
Date: Mon, 07 Dec 2009 19:00
Date: Mon, 07 Dec 2009 19:00
19 lines
2036 bytes
2036 bytes
On Dec 7, 7:22 pm, Michal <natural-born-kil...@dontmailme.com> wrote: > W c# jest modul dostepu do bazy danych, ktorego mozna uzyc do > podlaczenia sie do dowolnej bazy danych(do ktorej jest sterownik) aby > zmienic baze danych wystarczy zmienic connection string. Reszta kodu > pozostaje taka sama. Czy w pythonie sa podobne rozwiazania? Jedyne > jakie widzialem sa przeznaczone do konkretnych baz np postegresql, > mysql. Takie rozwiazanie stwaraza problem, poniewaz jak zmieni sie baza > to zmienic trzeba kupe kodu. > > -- Oczywiście, że istnieje. Spróbuj http://www.sqlalchemy.org/ Musisz do niego doinstalować moduły do baz danych, które chcesz obsługiwać (takie odpowiedniki sterowników w C#) ale współpracuje z wieloma. Listę obsługiwanych znajdziesz na stronie http://www.sqlalchemy.org/features.html -- Jan Koprowski
Re: uniwersalny modul dostepu do bazy danych
Author: Rob Wolfe
Date: Mon, 07 Dec 2009 20:05
Date: Mon, 07 Dec 2009 20:05
14 lines
1472 bytes
1472 bytes
Michal <natural-born-killer@dontmailme.com> writes: > W c# jest modul dostepu do bazy danych, ktorego mozna uzyc do > podlaczenia sie do dowolnej bazy danych(do ktorej jest sterownik) aby > zmienic baze danych wystarczy zmienic connection string. Reszta kodu > pozostaje taka sama. Czy w pythonie sa podobne rozwiazania? Jedyne > jakie widzialem sa przeznaczone do konkretnych baz np postegresql, > mysql. Takie rozwiazanie stwaraza problem, poniewaz jak zmieni sie baza > to zmienic trzeba kupe kodu. Te rozwiązania dla konkretnych baz na ogół są zgodne ze standardowym DB-API: http://www.python.org/dev/peps/pep-0249/ RW
Re: uniwersalny modul dostepu do bazy danych
Author: Michal
Date: Tue, 08 Dec 2009 07:38
Date: Tue, 08 Dec 2009 07:38
21 lines
1341 bytes
1341 bytes
On Mon, 07 Dec 2009 21:05:05 +0100 Rob Wolfe <rw@smsnet.pl> wrote: > > Te rozwiązania dla konkretnych baz na ogół są zgodne ze standardowym DB-API: > http://www.python.org/dev/peps/pep-0249/ > czyli jesli uzywam mysql to robie np import mysql as db2 # reszta kodu a jezeli zmieniam baze to wymieniam powyzsza linie np na import postegresql as db2 i to wysztarcza? P.S. Wiem, ze nazwy modulow sa zle ale jeszcze ich nie zmam. --
Re: uniwersalny modul dostepu do bazy danych
Author: Michal
Date: Tue, 08 Dec 2009 08:00
Date: Tue, 08 Dec 2009 08:00
16 lines
1623 bytes
1623 bytes
On Mon, 7 Dec 2009 11:00:04 -0800 (PST) Jan Koprowski <jan.koprowski@gmail.com> wrote: > Oczywiście, że istnieje. Spróbuj http://www.sqlalchemy.org/ > Musisz do niego doinstalować moduły do baz danych, które chcesz > obsługiwać (takie odpowiedniki sterowników w C#) ale współpracuje z > wieloma. > Listę obsługiwanych znajdziesz na stronie http://www.sqlalchemy.org/features.html > > -- a gdzie mam szukac sterownikow do sciagniecia(na stronie producenta bazy?). Czy te sterowniki sa zalezne od platformy czy smigaja na kazdej platformie gdzie jest python? Jezeli nie to czy bez problemu zgram sterowniki dla linux/window dla glownych rozwiazan: mysql, postegreesql, oracle?
Re: uniwersalny modul dostepu do bazy danych
Author: Bart Ogryczak
Date: Tue, 08 Dec 2009 09:57
Date: Tue, 08 Dec 2009 09:57
21 lines
2030 bytes
2030 bytes
On Dec 7, 7:22 pm, Michal <natural-born-kil...@dontmailme.com> wrote: > W c# jest modul dostepu do bazy danych, ktorego mozna uzyc do > podlaczenia sie do dowolnej bazy danych(do ktorej jest sterownik) aby > zmienic baze danych wystarczy zmienic connection string. Reszta kodu > pozostaje taka sama. Czy w pythonie sa podobne rozwiazania? Jedyne > jakie widzialem sa przeznaczone do konkretnych baz np postegresql, > mysql. Takie rozwiazanie stwaraza problem, poniewaz jak zmieni sie baza > to zmienic trzeba kupe kodu. W Pythonie masz DB API 2.0. Nic nie trzeba zmieniać. Wystarczy np. zmienić: import mysqldb as sql na np. import oracle_cx as sql Ewentualnie możesz się bawić w użycie __import__ i robić to dynamicznie.
Re: uniwersalny modul dostepu do bazy danych
Author: Marcin Kasperski
Date: Tue, 08 Dec 2009 11:21
Date: Tue, 08 Dec 2009 11:21
12 lines
1468 bytes
1468 bytes
> Wystarczy np. zmienić: > > import mysqldb as sql > > na np. > > import oracle_cx as sql No, nie do końca, diabeł tkwi w szczegółach (niektóre elementy składni SQL, obsługa kodowań znaków, ...). Przy pisaniu aplikacji z założenia nastawionej na wiele baz danych sqlalchemy (niekoniecznie ORM, SQL Expression wystarczy) jest dobrą propozycją.
Re: uniwersalny modul dostepu do bazy danych
Author: Marcin Kasperski
Date: Tue, 08 Dec 2009 11:40
Date: Tue, 08 Dec 2009 11:40
31 lines
2292 bytes
2292 bytes
> a gdzie mam szukac sterownikow do sciagniecia(na stronie producenta > bazy?). Różnie. Na Linuksach sterowniki do mysql i postgresa zazwyczaj są dostępne w dystrybucjach. Np. (Debian/Ubuntu) apt-get install python-psycopg2 python-mysqldb Do Oracle http://cx-oracle.sourceforge.net/ (a jeśli system nie pasuje, normalna samodzielna kompilacja ze źródeł). Inne bazy - Google Ci pomoże. Polecam też rozdzialiki "Driver" w ramach http://www.sqlalchemy.org/docs/05/reference/dialects/index.html > Czy te sterowniki sa zalezne od platformy czy smigaja na kazdej > platformie gdzie jest python? Są te same ale niemal zawsze wymagają skompilowania (boć interfejsy bazodanowe zwykle są dostępne w C-owatej formie). Innymi słowy jeśli nie znajdziesz skompilowanej wersji na daną platformę, będziesz potrzebować kompilatora C, developerskich headerów i bibliotek od bazy danych oraz developerskich headerów od pythona. I oczywiście źródeł modułu z driverem. > Jezeli nie to czy bez problemu zgram > sterowniki dla linux/window dla glownych rozwiazan: mysql, > postegreesql, oracle? Zgrasz, mnóstwo ludzi tego używa.
Re: uniwersalny modul dostepu do bazy danych
Author: Bart Ogryczak
Date: Tue, 08 Dec 2009 11:42
Date: Tue, 08 Dec 2009 11:42
21 lines
2039 bytes
2039 bytes
On Dec 8, 12:21 pm, Marcin Kasperski <Marcin.Kasper...@mekk.waw.pl> wrote: > > Wystarczy np. zmienić: > > > import mysqldb as sql > > > na np. > > > import oracle_cx as sql > > No, nie do końca, diabeł tkwi w szczegółach (niektóre elementy składni > SQL, obsługa kodowań znaków, ...). Można pisać zapytania używając jedynei składni SQL92. Działają bez problemu na wielu bazach. Ale to osobna kwestia. > Przy pisaniu aplikacji z założenia > nastawionej na wiele baz danych sqlalchemy (niekoniecznie ORM, SQL > Expression wystarczy) jest dobrą propozycją. Użycie ORM też dobrym pomysłem, jeśli aplikacja ma być większa.
Re: uniwersalny modul dostepu do bazy danych
Author: Jacek Czerwinski
Date: Tue, 08 Dec 2009 12:16
Date: Tue, 08 Dec 2009 12:16
14 lines
1522 bytes
1522 bytes
Bart Ogryczak pisze: > On Dec 8, 12:21 pm, Marcin Kasperski <Marcin.Kasper...@mekk.waw.pl> > wrote: >>> Wystarczy np. zmienić: >>> import mysqldb as sql >>> na np. >>> import oracle_cx as sql >> No, nie do końca, diabeł tkwi w szczegółach (niektóre elementy składni >> SQL, obsługa kodowań znaków, ...). > > Można pisać zapytania używając jedynei składni SQL92. Działają bez > problemu na wielu bazach. Ale to osobna kwestia. Dopóki nie tykamy się zakładania tabel i podobnych czynności.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads