oracledb has no attribute init_oracle_client

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
drnicolas
User
Beiträge: 87
Registriert: Sonntag 24. Juli 2016, 10:32

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Laut https://python-oracledb.readthedocs.io/ ... blingthick sollte das gehen, also version prüfen und konkreten Code und Fehlermeldung zeigen.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
drnicolas
User
Beiträge: 87
Registriert: Sonntag 24. Juli 2016, 10:32

<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?
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
drnicolas
User
Beiträge: 87
Registriert: Sonntag 24. Juli 2016, 10:32

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

__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.
Antworten