Anbindung an PostgreSQL via PyGreSQL

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
ZZHAT
User
Beiträge: 10
Registriert: Sonntag 6. August 2006, 14:37

Anbindung an PostgreSQL via PyGreSQL

Beitragvon ZZHAT » Donnerstag 10. August 2006, 13:36

Hallo zusammen,
ich habe etwas Zeit investieren müssen, um eine Verbindung
zu meiner PostgreSQL aufzubauen.
Um dem einen oder anderen, den Zeitaufwand etwas zu ersparen,
poste ich mal ein kleines Tut. :wink:
Nach viel hin und her, habe mich letztendlich für PyGreSQL entschieden
aber einen besonderen Grund gibt es nicht dafür,
da auch die anderen Projekte den aktuellen Standards
entsprechen.

Es war für mich am Anfang etwas frustrierend, eine Verbindung
zur DB hinzubekommen, da ich ständig mit Fehlern bezüglich
fehlender 'dlls' genervt wurde aber dies liess sich dann doch
recht einfach lösen.

Da ich PostgreSQL auch auf meiner Window-Schüssel
installierte hatte, habe ich nur in meine 'Path'-Umgebung
nur das 'bin'-Verzeichnis von PostgreSQL angeben müssen.

Natürlich kann man sich die einzelnen Dateien, sofern man sie
hat z.B. auch ins 'DLLs'-Verzeichnis kopieren oder sonst wohin.
Wichtig ist nur, das sie auch gefunden werden können.

Die benötigten Dateien aus dem 'bin'-Verezichnis von PostgreSQL
comerr32.dll
krb5_32.dll
libeay32.dll
libiconv-2.dll
libintl-2.dll
libpq.dll
ssleay32.dll

Ein kleines Beispiel, meiner DB-Testanbindung:

Code: Alles auswählen

from pyPgSQL import PgSQL

class PostgreSQL:
    def __init__ (self,
                _DNS,
                _USER,
                _PASSWORD,
                _HOST,
                _DBNAME,
                _PORT,
                _OPT,
                _TTY,
                _CLIENT_ENCODING,
                _UNICODE_RESULTS) :

                self.DNS                = _DNS
                self.USER               = _USER
                self.PASSWORD           = _PASSWORD
                self.HOST               = _HOST
                self.DBNAME             = _DBNAME
                self.PORT               = _PORT
                self.OPT                = _OPT
                self.TTY                = _TTY
                self.CLIENT_ENCODING    = _CLIENT_ENCODING
                self.UNICODE_RESULTS    = _UNICODE_RESULTS
       
                self.db = PgSQL.connect(self.DNS,
                        self.USER,
                        self.PASSWORD,
                        self.HOST,
                        self.DBNAME,
                        self.PORT,
                        self.OPT,
                        self.TTY,
                        self.CLIENT_ENCODING,
                        self.UNICODE_RESULTS)
               
    def cursor(self):
        return self.db.cursor()
   
##############################################################
##############################################################
#[Database]
DNS=None
USER='user_xy'
PASSWORD='user_pwd'
HOST='localhost'
DBNAME='user_db'
PORT=5432
OPT=None
TTY=None
CLIENT_ENCODING=None
UNICODE_RESULTS=None

QUERY_00="SELECT count(*) FROM db_xy"

def MyCon(self):
    myDB = PostgreSQL(DNS,
                USER,
                PASSWORD,
                HOST,
                DBNAME,
                PORT,
                OPT,
                TTY,
                CLIENT_ENCODING,
                UNICODE_RESULTS)
   
    c_00 = myDB.cursor()
    c_00.execute(QUERY_00)
   
    fr_one = c_00.fetchone()
   
    print fr_one[0]


def main():
    MyCon(0)

if __name__ == '__main__':
    main()


Und am Ende war dann doch alles ganz einfach..
:lol:

Viele liebe Grüße
ZZHAT
Zuletzt geändert von ZZHAT am Donnerstag 10. August 2006, 16:00, insgesamt 1-mal geändert.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Donnerstag 10. August 2006, 13:48

also fehlermeldungen helfen weiter :-)
Beetle
User
Beiträge: 5
Registriert: Sonntag 5. August 2007, 20:45

Beitragvon Beetle » Dienstag 7. August 2007, 20:53

Ich bekomme trotzdem keine Verbindung hin :( :(

Umgebung
Windows XP SP2
Python 2.5
PostgreSQL 8.2
PyGreSQL-3.8.1.win32-py2.5

und das wahnsinnige Beispiel ist:
from pyPgSQL import PgSQL

und die Fehlermeldung:
No Modul named pyPgSQL

Ich bitte um Hilfe!

Danke
Beetle
BlackJack

Beitragvon BlackJack » Dienstag 7. August 2007, 21:09

Das Modul heisst `pgdb`.
Beetle
User
Beiträge: 5
Registriert: Sonntag 5. August 2007, 20:45

Beitragvon Beetle » Dienstag 7. August 2007, 21:19

Danke BlackJack,
dann stimmt an dem oben angegebenem Beispiel etwas nicht oder ich erkenne es nicht.

Danke dir!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 7. August 2007, 21:36

Beetle hat geschrieben:dann stimmt an dem oben angegebenem Beispiel etwas nicht oder

Hallo Beetle!

Es gibt viele Datenbankschnittstellen. Auch mehrere für PostgreSQL. Du hast ein Beispiel für *pyPgSQL* und verwendest es mit *PyGreSQL*.

Siehe: http://www.python-forum.de/topic-6848.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]