Detaillierte Erläuterung der Schritte zur Installation des cx_Oracle-Moduls

Y2J
Freigeben: 2017-05-10 11:52:49
Original
3597 Leute haben es durchsucht

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 den

MySQL 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

sicherer

war 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
Nach dem Login kopieren

4. 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
Nach dem Login kopieren

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的位置,也可能在其他地方,自己找一下吧
Nach dem Login kopieren

$python
>>import cx_Oracle
Nach dem Login kopieren
Wenn 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

ist

ist 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 kompilieren
Google的信息: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
Nach dem Login kopieren

und 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
Nach dem Login kopieren

Verwenden Sie:


1. Einfache Verbindung – verwenden Sie den Oracle TNS-Alias ​​

2. Der Benutzer gibt das Passwort ein, um eine Verbindung herzustellen
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)
Nach dem Login kopieren

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")
Nach dem Login kopieren

4. Verwenden Sie die Easy Connect-Syntax, um eine Verbindung zur Datenbank herzustellen über Drive
connection =cx_Oracle.connect(sys.argv[1])
Nach dem Login kopieren

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')
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

[Verwandte Empfehlungen]
TNS:listener does not currently know of service requested in connect descriptor
Nach dem Login kopieren


1.

Python kostenloses Video-Tutorial

2.

Python-objektorientiertes Video-Tutorial

3.

Python-Grundlagen-Einführungshandbuch

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage