🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#27020
Author: Michal
Date: Mon, 07 Dec 2009 18:22
9 lines
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
#27021
Author: Jan Koprowski
Date: Mon, 07 Dec 2009 19:00
19 lines
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
#27025
Author: Rob Wolfe
Date: Mon, 07 Dec 2009 20:05
14 lines
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
#27026
Author: Michal
Date: Tue, 08 Dec 2009 07:38
21 lines
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
#27023
Author: Michal
Date: Tue, 08 Dec 2009 08:00
16 lines
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
#27027
Author: Bart Ogryczak
Date: Tue, 08 Dec 2009 09:57
21 lines
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
#27028
Author: Marcin Kasperski
Date: Tue, 08 Dec 2009 11:21
12 lines
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
#27024
Author: Marcin Kasperski
Date: Tue, 08 Dec 2009 11:40
31 lines
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
#27029
Author: Bart Ogryczak
Date: Tue, 08 Dec 2009 11:42
21 lines
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
#27030
Author: Jacek Czerwinski
Date: Tue, 08 Dec 2009 12:16
14 lines
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