[英]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 配置文件:
/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
編輯~/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")
...
回復晚了,但對未來的讀者有用。
安裝:
來自: 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.