簡體   English   中英

你如何使用pyodbc連接到oracle

[英]how do you connect to oracle using pyodbc

我正在嘗試使用 pyodbc 連接到 Oracle 數據庫,但出現錯誤。 示例包括 ms sql server 驅動程序:

在我的 /etc/unixODBC/odbc.ini 中,我有這個條目:

[test_con]
Driver=Oracle
Description=data repository db
Trace=Yes
ServerName=//db1.example.com:1521/db2_svc1


import pyodbc
cnxn=pyodbc.connect('DSN=test_con, UID=user_id, PWD=passwd123')

我收到此錯誤:

pyodbc.Error: ('IM012', '[IM012] [unixODBC][Driver Manager]DRIVER keyword syntax error (0) (SQLDriverConnect)')

我來到這里是為了尋找這個問題的答案,但在其他地方找到了我想分享的更一般問題的答案。 您可以使用 cx_Oracle 庫,在沒有 pyodbc 的情況下非常簡單地連接到 Oracle 數據庫。 查看下面的安裝說明:

https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html

入門代碼如下:

cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_10")

connection = cx_Oracle.connect(
user="username",
password="password",
dsn="address")

cursor = connection.cursor()

pyodbc 維護者在記錄如何安裝 Oracle ODBC 驅動程序以及如何連接到數據庫方面做得非常出色。 它對我有用https : //github.com/mkleehammer/pyodbc/wiki/Connecting-to-Oracle-from-RHEL-or-Centos

下面的代碼適用於 Mac OS 上的 mssql,它假定您使用以下命令安裝了 unixODBC:

$ brew install freetds --with-unixodbc

並且您已經編輯了兩個 odbc 配置文件:

  1. /usr/local/Cellar/unixodbc/2.3.2_1/etc/odbcinst.ini

    [免費TDS]

    說明=適用於 MacOS 上的 Linux 和 MSSQL 的 FreeTDS 驅動程序

    驅動程序=/usr/local/Cellar/freetds/0.95.80/lib/libtdsodbc.0.so

    設置=/usr/local/Cellar/freetds/0.95.80/lib/libtdsodbc.0.so

    文件使用率=1

  2. 編輯~/Library/ODBC/odbc.ini

    [sql_server]

    驅動程序=FreeTDS

    服務器=put_ip_here

    端口=1433

==代碼:

import pyodbc

connection_string = "Driver={{FreeTDS}};Server={};"\
"Database={};UID={};PWD={};"\
.format(db_host, db_name, db_user, db_password)

with pyodbc.connect(connection_string) as db:
    cursor = db.cursor()

    cursor.execute("SELECT count(*) FROM aTable")
    ...

回復晚了,但對未來的讀者有用。

安裝:

  • oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
  • oracle-instantclient12.2-odbc-12.2.0.1.0-2.x86_64.rpm

來自: http : //www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

sudo rpm -Uvh oracle-instantclient12.2-*

設置 ORACLE_HOME 和 LD_LIBRARY_PATH

export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib

在 /etc/odbcinst.ini 中設置:

[Oracle_test]
Description=Oracle ODBC driver for Oracle 12c
Driver=/usr/lib/oracle/12.2/client64/lib/libsqora.so.12.1
FileUsage=1
Driver Logging=7
UsageCount=1

在 Python 外殼中:

>>> import pyodbc
>>> conn = pyodbc.connect('DRIVER={Oracle_test};Host=1.1.1.1;Port=1521;Service Name=orcl.local;User ID=test1;Password=test1')
>>> print(conn)
<pyodbc.Connection object at 0x7f6acb2c4c00> 

希望它可以幫助某人。

PS:你也可以在/etc/ld.so.conf中設置驅動為

/usr/lib/oracle/12.2/client64/lib

運行:ldconfig

嘗試類似:

import pyodbc
connectString = 'Driver={Microdsoft ODBC for Oracle};Server=<host>:<port>/<db>.<host>;uid= <username>;pwd=<password>'
cnxn = pyodbc.connect(connectString)

閱讀一些文檔;) https://sites.google.com/site/bcgeopython/examples/getting-the-pyodbc-module

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM