Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

uniwersalny modul dostepu do bazy danych

5 views
Skip to first unread message

Michal

unread,
Dec 7, 2009, 1:22:32 PM12/7/09
to
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.

--

Jan Koprowski

unread,
Dec 7, 2009, 2:00:04 PM12/7/09
to

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

Rob Wolfe

unread,
Dec 7, 2009, 3:05:05 PM12/7/09
to
Michal <natural-b...@dontmailme.com> writes:

Te rozwi�zania dla konkretnych baz na og� s� zgodne ze standardowym DB-API:
http://www.python.org/dev/peps/pep-0249/

RW

Michal

unread,
Dec 8, 2009, 2:38:16 AM12/8/09
to
On Mon, 07 Dec 2009 21:05:05 +0100
Rob Wolfe <r...@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.


--

Michal

unread,
Dec 8, 2009, 3:00:38 AM12/8/09
to
On Mon, 7 Dec 2009 11:00:04 -0800 (PST)
Jan Koprowski <jan.ko...@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?

Bart Ogryczak

unread,
Dec 8, 2009, 4:57:08 AM12/8/09
to
On Dec 7, 7:22 pm, Michal <natural-born-kil...@dontmailme.com> wrote:

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.


Marcin Kasperski

unread,
Dec 8, 2009, 6:21:52 AM12/8/09
to
> 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ą.

Bart Ogryczak

unread,
Dec 8, 2009, 6:42:53 AM12/8/09
to
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.

Marcin Kasperski

unread,
Dec 8, 2009, 6:40:16 AM12/8/09
to
> 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.


Jacek Czerwinski

unread,
Dec 8, 2009, 7:16:30 AM12/8/09
to
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.

0 new messages