Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana saya bisa mengakses Oracle dari Python?

Inilah yang berhasil untuk saya. Versi Python dan Oracle saya sedikit berbeda dari versi Anda, tetapi pendekatan yang sama harus diterapkan. Pastikan versi penginstal biner cx_Oracle cocok dengan klien Oracle dan versi Python Anda.

Versi saya:

  • Python 2.7
  • Klien Instan Oracle 11G R2
  • cx_Oracle 5.0.4 (Unicode, Python 2.7, Oracle 11G)
  • Windows XP SP3

Langkah-langkah:

  1. Unduh paket Oracle Instant Client. Saya menggunakan instantclient-basic-win32-11.2.0.1.0.zip. Buka zip ke C:\your\path\to\instantclient_11_2
  2. Unduh dan jalankan penginstal biner cx_Oracle. Saya menggunakan cx_Oracle-5.0.4-11g-unicode.win32-py2.7.msi. Saya menginstalnya untuk semua pengguna dan mengarahkannya ke lokasi Python 2.7 yang ditemukan di registri.
  3. Setel variabel lingkungan ORACLE_HOME dan PATH melalui skrip batch atau mekanisme apa pun yang masuk akal dalam konteks aplikasi Anda, sehingga keduanya mengarah ke direktori Oracle Instant Client. Lihat sumber oracle_python.bat di bawah ini. Saya yakin pasti ada solusi yang lebih elegan untuk ini, tetapi saya ingin membatasi perubahan di seluruh sistem saya sebanyak mungkin. Pastikan Anda meletakkan direktori Oracle Instant Client yang ditargetkan di awal PATH (atau setidaknya di depan direktori klien Oracle lainnya). Saat ini, saya hanya melakukan hal-hal baris perintah, jadi saya hanya menjalankan oracle_python.bat di shell sebelum menjalankan program apa pun yang memerlukan cx_Oracle.
  4. Jalankan regedit dan periksa apakah ada kunci NLS_LANG yang disetel di \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE. Jika demikian, ganti nama kunci (saya mengubahnya menjadi NLS_LANG_OLD) atau hapus setel. Kunci ini hanya boleh digunakan sebagai nilai NLS_LANG default untuk klien Oracle 7, jadi aman untuk menghapusnya kecuali Anda menggunakan klien Oracle 7 di tempat lain. Seperti biasa, pastikan untuk membuat cadangan registri Anda sebelum melakukan perubahan.
  5. Sekarang, Anda seharusnya dapat mengimpor cx_Oracle dalam program Python Anda. Lihat sumber Oracle_test.py di bawah ini. Perhatikan bahwa saya harus menyetel koneksi dan string SQL ke Unicode untuk versi cx_Oracle saya.

Sumber:oracle_python.bat

@echo off
set ORACLE_HOME=C:\your\path\to\instantclient_11_2
set PATH=%ORACLE_HOME%;%PATH%

Sumber:oracle_test.py

import cx_Oracle

conn_str = u'user/[email protected]:port/service'
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
c.execute(u'select your_col_1, your_col_2 from your_table')
for row in c:
    print row[0], "-", row[1]
conn.close()

Kemungkinan Masalah:

  • "ORA-12705:Tidak dapat mengakses file data NLS atau lingkungan tidak valid yang ditentukan" - Saya mengalami ini sebelum membuat perubahan registri NLS_LANG.
  • "TypeError:argumen 1 harus unicode, bukan str" - jika Anda perlu menyetel string koneksi ke Unicode.
  • "TypeError:mengharapkan None atau string" - jika Anda perlu menyetel string SQL ke Unicode.
  • "ImportError:Pemuatan DLL gagal:Prosedur yang ditentukan tidak dapat ditemukan." - mungkin menunjukkan bahwa cx_Oracle tidak dapat menemukan DLL klien Oracle yang sesuai.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 12c DIIDENTIFIKASI OLEH NILAI

  2. Menginstal Oracle 32-bit Client di Windows Server Sudah Menjalankan 64-bit Oracle Database Server

  3. Apa perbedaan antara Tampilan dan Tampilan Terwujud di Oracle?

  4. cara meneruskan variabel dari skrip shell ke sqlplus

  5. Cara Mengambil Data dari Kursor di Oracle Menggunakan For Loop