Seite 1 von 1

connect to oracle

Verfasst: Mittwoch 31. Oktober 2007, 08:42
von mephisto23
hallo

wie kann ich mit python am einfachsten auf eine oracle datenbank verbinden?
hab jetzt schon einige zeit gesucht aber leider nix gefunen (vermutlich falsch gesucht)

vielen vielen dank für eure hilfe. ich bin am verzweifeln.
mfg
mephisto

Verfasst: Mittwoch 31. Oktober 2007, 09:09
von lutz.horn
Vermutlich http://pypi.python.org/pypi/cx_Oracle/, auch wenn ich damit keine Erfahrung habe.

Verfasst: Mittwoch 31. Oktober 2007, 09:17
von mephisto23
ich hab mir cx_oracle schon angeschaut... ich hab leider nicht raus gefunden wie das funktionieren soll.

€: hab gerade SQLObject gefuden. funktioniert es damit.

Verfasst: Mittwoch 31. Oktober 2007, 09:20
von Leonidas
Ist doch sogar auf der von lutz.horn angegebenen Seite verlinkt: DB-API 2.0. Also kannst du Beispiele für MySQLdb oder psycopg2 fast direkt übernehmen.

Edit: Wenn du ein ORM suchst.. SQLAlchemy kann auch über cx_Oracle auf Oracle-Datenbanken zugreifen.

Verfasst: Mittwoch 31. Oktober 2007, 09:25
von mephisto23
ich finde auf der seite keinen downlaod für ein lib file... oder sonst was.
wie bau ich sowas in mein programm ein?

sorry für die blöden fragen

Verfasst: Mittwoch 31. Oktober 2007, 09:29
von Leonidas
mephisto23 hat geschrieben:ich finde auf der seite keinen downlaod für ein lib file... oder sonst was.
Also ich schon, sogar eine Menge. Du lädst eben das passende Paket runter, installierst es (es gibt eine README-Datei, die kannst du dir durchlesen wenn du Probleme hast) und kannst es dann nutzen.

Verfasst: Mittwoch 31. Oktober 2007, 09:36
von mephisto23
danke. das hab ich schon versucht...
kann es aber nicht importieren, ich bekomme immer die meldung:

Traceback (most recent call last):
File "<pyshell#2>", line 1, in -toplevel-
import cx_Oracle
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

die datei cx_Oracle hab ich aber wie in der readme steht im python verzeichnis.

Verfasst: Mittwoch 31. Oktober 2007, 09:47
von Leonidas
Hast du den Windows Installer genommen oder selbst kompiliert?

Verfasst: Mittwoch 31. Oktober 2007, 09:49
von mephisto23
windows installer

hab es in einer vm ware gemacht. also alles neu.
habe diese file verwendet: Windows Installer (Oracle 10g, Python 2.4)

wenn ich die cx_Oracle datei in das lib verzeichnis kopier passiert auch nichts

Verfasst: Mittwoch 31. Oktober 2007, 10:47
von lutz.horn
Das Problem gab es schon eimal: http://www.python-forum.de/topic-4763.h ... oracle+dll

Ansonsten ergibt eine Websuche eher den Hinweis, dass es sich um Versionsprobleme handeln könnte.

Verfasst: Mittwoch 31. Oktober 2007, 10:53
von mephisto23
ein installationsproblem scheint es nicht zu sein.
im pathbrowser seh ich die datei.

€: mit einer älteren version funktioniert es auch nicht

normalerweiße sollte es doch gehn einfach die datei cx_Oracle.pyd in den lib ordner zu kopieren oder?

Verfasst: Mittwoch 31. Oktober 2007, 11:03
von lutz.horn
Keine Ahnung, ich benutze weder Windows noch Oracle :wink:

Unter Linux läuft das so:

Code: Alles auswählen

lutz@hume ~ % easy_install cx_Oracle
Searching for cx-Oracle
Reading http://cheeseshop.python.org/pypi/cx_Oracle/
Reading http://cx-oracle.sourceforge.net
Reading http://cheeseshop.python.org/pypi/cx_Oracle/4.3.3
Best match: cx-Oracle 4.3.3
Downloading http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-4.3.3.tar.gz?download
Processing cx_Oracle-4.3.3.tar.gz
Running cx_Oracle-4.3.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-I_-rP0/cx_Oracle-4.3.3/egg-dist-tmp-ko0ytf
error: cannot locate an Oracle software installation
Das hilft Dir zwar nicht, deutet aber darauf hin, dass eine lokale Installation von Oracle benötigt wird.

Verfasst: Mittwoch 31. Oktober 2007, 11:13
von mephisto23
ok. dann bringt mir das leider nichts.
oracle läuft momentan auf einem testserver
und die produktive maschiene auf der das ganze laufen soll steht in einem Bundesrechenzentrum

Verfasst: Mittwoch 31. Oktober 2007, 11:22
von Leonidas
lutz.horn hat geschrieben:Das hilft Dir zwar nicht, deutet aber darauf hin, dass eine lokale Installation von Oracle benötigt wird.
Zum kompilieren werden wohl die Oracle-Header benötigt, das stimmt.

Ich würde ja vorschlagen mit `ldd` zu schauen, gegen welche DLLs die `cx_Oracle.pyd` gelinkt ist. Vielleicht reicht es, Oracle 10g Express Edition zu installieren um die nötigen DLLs zu bekommen.

Verfasst: Mittwoch 31. Oktober 2007, 11:30
von mephisto23
normalerweiße müsste es doch dastehn wenn einen dll fehlst. oder liege ich da falsch?

edit: habs gerade auf dem pc eines kollegen getestet. wenn man den oracle 10g client drauf hat funktionierts