Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung der Schritte zur Installation des cx_Oracle-Moduls
Dieser Artikel stellt hauptsächlich die relevanten Informationen zur Installation und Verwendung des Python cx_Oracle-Moduls im Detail vor. Freunde, die sie benötigen, können sich auf
Installation des Python cx_Oracle-Moduls
Kürzlich muss ich ein Datenmigrationsskript schreiben, um die Daten in einem einzelnen Oracle in denMySQL Sharding-Cluster zu migrieren. Die Installation von cx_Oracle unter Linux. Lassen Sie uns das klären und eine Zusammenfassung erstellen. Für den Oracle-Client müssen Sie nicht nur das entsprechende Python-Modul installieren (hier habe ich das offizielle Python-Modul von Oracle verwendet – cx_Oracle), sondern auch den Oracle-Client installieren. und Sie müssen es auch tnsnames.ora konfigurieren (natürlich kann es auch einfach über host:port/schema aufgerufen werden).
Installation:
1. Da unsere Oracle-Daten etwas alt sind, habe ich mich für eine ältere Version entschieden – Oracle Instant Client 10.2.0.4.
2. Instantclient-basic herunterladen. Download-Adresse: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html. Das ist ein schwerwiegender Schwachsinn gegen Oracle. Sie müssen sich registrieren, bevor Sie es herunterladen können. Der Schlüssel ist, dass bei der Registrierung Zahlen und Buchstaben erforderlich sind, und zwar in Groß- und Kleinschreibung mindestens 8 Zeichen. Sie zwangen mich, mir ein Passwort zu besorgen, das
sichererwar als mein Bankpasswort (naja, jetzt habe ich vergessen, was ich eingegeben habe...) und einfach Basic herunterzuladen.
3. Installation und Konfiguration$wget download.oracle.com/otn/linux/instantclient/10204/basic-10.2.0.4.0-linux-x86_64.zip4. Konfigurieren Sie tnsnames.ora (tns muss nicht konfiguriert werden)
$unzip instantclient-basic-linux.x64-10.2.0.4.0.zip $cd instantclient_10_2 $cp * /usr/lib #直接放到动态库搜索路径中,不需要额外的环境配置 或 $unzip instantclient-basic-linux.x64-10.2.0.4.0.zip $cp -rf instantclient_10_2 /opt/ $vi /etc/profile export ORACLE_HOME=/opt/instantclient_10_2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME $source /etc/profile
Beachten Sie, dass tnsnames.ora dies tut Existiert eigentlich nicht; Man muss es selbst erstellen (das ist auch ekelhaft, ich dachte zuerst, ich müsste etwas installieren...), ich habe diese Methode nicht verwendet, wenn Sie interessiert sind, können Sie es googeln.
5. Laden Sie das cx_Oracle-Python-Modul herunter und installieren Sie es
6. Überprüfung und Problemlösung$wget downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm $rpm -ivh cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm $ls /usr/lib/python2.6/site-packages/cx_Oracle.so #有这个文件表示安装成功,根据python的位置,也可能在其他地方,自己找一下吧
$python >>import cx_OracleWenn ein Fehler gemeldet wird: cx_Oracle importieren gab ImportError: libclntsh. so.10.1: Shared Object File kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis
bedeutet, dass die dynamische Bibliothek des Instant-Clients nicht gefunden wurde. Überprüfen Sie, ob die Umgebungsvariable
istist konfiguriert, ob es wirksam ist und die Version ist korrekt. Wenn ein Fehler gemeldet wird: ImportError: ./cx_Oracle.so: undefiniertes Symbol: PyUnicodeUCS4_Decode
Also Python neu kompilierenGoogle的信息:There is nothing wrong with Debian. Python supports two incompatible modes of operation for Unicode, UCS2 (the default), and UCS4. Debian uses the default, Redhat uses UCS4. You need to recompile the extension for UCS-2 mode (i.e. using a Debian installation); this would fix the undefined symbol: PyUnicodeUCS4_Decodeund schließlich noch einmal überprüfen Der Import ist normal.
$./configure --prefix=/usr/local/python2.6.5 --enable-shared -enable-unicode=ucs4 $make;make install
Verwenden Sie:
1. Einfache Verbindung – verwenden Sie den Oracle TNS-Alias
connection =cx_Oracle.connect("tp/tp@ocn_test") #查看tns alias命令 cmd>tnsping ocn_test TNS Ping Utility forLinux: Version 9.2.0.8.0-Production on 27-SEP-201110:47:48 Copyright (c) 1997, 2006, Oracle Corporation. Allrights reserved. Used parameter files: /opt/……/sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL =TCP)(HOST =10.20.36.19)(PORT =1520))) (CONNECT_DATA =(SID =ocntest))) OK (10msec)3. Der Benutzer gibt die Verbindungskontoinformationen direkt in den Python-Befehl ein, beispielsweise im Format python script.py tp/tp@ocn_test
pwd =getpass.getpass() connection =cx_Oracle.connect("tp",pwd,"ocn_test")4. Verwenden Sie die Easy Connect-Syntax, um eine Verbindung zur Datenbank herzustellen über Drive
connection =cx_Oracle.connect(sys.argv[1])5. Verwenden Sie zuerst DSN, um TNSNAME zu bilden
connection =cx_Oracle.connect('tp','tp','10.20.36.19:1521/ocntest') #or connection =cx_Oracle.connect('tp/tp@10.20.36.19:1521/ocntest')6. Melden Sie sich als SYSDBA an
tns_name =cx_Oracle.makedsn('10.20.36.19','1521',' ocntest ') connection =cx_Oracle.connect('tp','tp',tns_name)An Beim Ausführen von Oracle-Vorgängen auf dem Linux-Server ist ein Fehler aufgetreten:
connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSDBA) #or as SYSOPER connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSOPER)[Verwandte Empfehlungen]
TNS:listener does not currently know of service requested in connect descriptor
1.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Installation des cx_Oracle-Moduls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!