我正在尝试使用pyodbc连接到Oracle数据库,从而获得错误。示例包括ms sql server driver:
在我的/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)')
答案 0 :(得分:1)
以下代码适用于Mac OS上的mssql,它假定您使用以下命令安装了unixODBC:
$ brew install freetds --with-unixodbc
并且您已编辑了两个odbc配置文件:
<强> /usr/local/Cellar/unixodbc/2.3.2_1/etc/odbcinst.ini 强>
[freetds的]
Description =适用于Linux的FreeTDS驱动程序&amp; MacOS上的MSSQL
驱动器=在/ usr /本地/地窖/ freetds的/ 0.95.80 / LIB / libtdsodbc.0.so
设置=的/ usr /本地/地窖/ freetds的/ 0.95.80 / LIB / libtdsodbc.0.so
FileUsage = 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")
...
答案 1 :(得分:1)
答案 2 :(得分:1)
我来到这里是为了寻找这个问题的答案,但在其他地方找到了一个更普遍的问题的答案,我想分享这个问题。您可以使用 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()
答案 3 :(得分:0)
答复已经很晚了,但对将来的读者很有用。
安装:
发件人: 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 shell中:
>>> 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
答案 4 :(得分:-3)
尝试类似:
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