Seite 1 von 1

oracledb has no attribute init_oracle_client

Verfasst: Montag 28. August 2023, 16:35
von drnicolas
obiges Attribut soll man aufrufen um den sog. Thick-mode zu nutzen.

Leider scheint oracledb das nicht zu kennen.

Ich bekomme jedenfalls immer die Fehlermedlung, daß oracledb dieses Attribut nicht kennt.

cx_Oracle hingegen scheint das zu kennen, ist aber wohl der Vorgänger von Oracledb

Egal wo ich recherchiere - diese Funktion muss es geben

Ich nutze Debian 12

Re: oracledb has no attribute init_oracle_client

Verfasst: Montag 28. August 2023, 16:47
von __deets__
Laut https://python-oracledb.readthedocs.io/ ... blingthick sollte das gehen, also version prüfen und konkreten Code und Fehlermeldung zeigen.

Re: oracledb has no attribute init_oracle_client

Verfasst: Montag 28. August 2023, 16:50
von __blackjack__
@drnicolas: Du hast nicht zufällig *selbst* ein `oracledb`-Modul erstellt und *das* importiert, statt dem `oracledb`-Modul das Du eigentlich verwenden willst? Was gibt ein ``print(oracledb)`` direkt nach dem Import des Moduls aus?

Re: oracledb has no attribute init_oracle_client

Verfasst: Montag 28. August 2023, 20:04
von drnicolas
<module 'oracledb' from '/usr/lib/python3/dist-packages/oracledb/__init__.py'>
Das ist die Ausgabe von oracledb direkt nach import. Sieht doch schick aus, oder?

Re: oracledb has no attribute init_oracle_client

Verfasst: Montag 28. August 2023, 21:25
von __blackjack__
Sieht schick aus. Allerdings ist das anscheinend aus einem Paket der Linuxdistribution. Vielleicht ist das zu alt. Welche Version ist das denn?

Edit: Kann nicht sein, die Funktion gibt es seit der allerersten Version. Wo hast Du denn das `print()` gemacht? In der Datei in der danach dann auch die Ausnahme kommt?

Edit2: Kann natürlich doch sein wenn die Linux-Distribution daran rumgeschraubt hat, zum Beispiel falls die Oracle-Bibliotheken die man dafür braucht nicht Open Source sind, oder so.

Re: oracledb has no attribute init_oracle_client

Verfasst: Dienstag 29. August 2023, 08:15
von drnicolas
import oracledb
import cx_Oracle

print(oracledb)
cx_Oracle.init_oracle_client(lib_dir='/usr/lib/oracle/21/client64/lib')

oracledb.defaults.config_dir='/usr/lib/oracle/19.6/client64/lib'

#print(oracledb.clientversion )

#oracledb.init_oracle_client(lib_dir='/usr/lib/oracle/21/client64/lib')
oracledb.init_oracle_client()

Das ist das Code-Fragment.
cx ... init klappt übrigens reibungslos, der Verbindungsaufbau später schlägt dann aber wegen des Encodings fehl.

oracledb als moderene Variate hingegen funktioniert nicht. Zumindest nicht im Thick-mode

Um ehrlich zu sein:

Es hat schon funktioniert. Ich weiß nicht mehr warum ich uaf oracledb gegangen bin. Wahrscheinlich weil die Umlaute immer falsch ankommen.

Aus verschiedenen Gründen habe ich am WoE ein Upgrade Debian 10 -> 11 -> 12 durchgeführt. und seither klemmt's.

Re: oracledb has no attribute init_oracle_client

Verfasst: Dienstag 29. August 2023, 08:37
von __deets__
__blackjack__ hat es ja schon erwaehnt, es kann sein, dass die Paketmaintainer dadran rumgeschnitzt haben. Installier dir das doch einfach mit pip, statt aus der Paketverwaltung.