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.zip
$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_Oracle
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_Decode
$./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)
pwd =getpass.getpass() connection =cx_Oracle.connect("tp",pwd,"ocn_test")
connection =cx_Oracle.connect(sys.argv[1])
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')
tns_name =cx_Oracle.makedsn('10.20.36.19','1521',' ocntest ') connection =cx_Oracle.connect('tp','tp',tns_name)
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)
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!