【发布时间】:2018-11-13 19:05:01
【问题描述】:
在过去的 48 小时里,我几乎尝试了所有可用的解决方案。我最后的选择是:
我可以通过 Oracle SQL developer 访问数据库。
现在我想使用 pyodbc 在 python 中调用查询。但我不断收到此错误:
我的代码如下所示:
import pyodbc
oracledriver = '{xyxzz}'
oracleuid = 'abcd'
oraclepwd = 'abcd'
oracleConn = pyodbc.connect(DRIVER=oracledriver, UID=oracleuid, PWD=oraclepwd, DBQ=oracledbq)
错误:
<i> InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') <i>
我认为问题在于设置数据库或其他什么?请帮助我解决可能的问题。 tsanames 上的东西? (可能)
编辑: 当我尝试获取 DSN 文件时:
我得到了这个弹出窗口:
无法使用文件数据源参数建立连接 输入了
更多信息: 我掌握的所有信息是:
<property name="URL" value="jdbc:oracle:thin:@abcd:1522/abcd" /> <property name="user" value="12345" /> <property name="password" value="12345" />
我开始使用不同的方法来使用 sql alchemy。它看起来正在工作。但是当我尝试执行查询时,我收到一个错误。代码和错误如下:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
import cx_Oracle
engine = create_engine('oracle://user:pwdd@localhost:1521/dbname')
connection = engine.connect()
Session = scoped_session(sessionmaker(bind=engine))
s = Session()
result = s.execute('select * from strategy_group_decode;')
错误是:
DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: 64 位 Oracle 无法加载客户端库:“C:\OraHome_2\oci.dll 不是 正确的架构”。见 https://oracle.github.io/odpi/doc/installation.html#windows求帮助 (此错误的背景:http://sqlalche.me/e/4xp6)
提前谢谢你。
【问题讨论】:
-
我相信为了使用 ODBC,您需要在运行客户端软件(在本例中为 python)的任何机器上安装 Oracle 客户端。我不相信 pyodbc 可以与 Oracle JDBC 瘦客户端一起使用。
-
您好,驱动已经安装。我能够使用 Oracle SQL Developer 执行查询
-
Oracle SQL Developer 附带 JDBC 瘦客户端;我认为您需要所谓的“厚”客户端(Oracle Instant Client)以及 Oracle ODBC 驱动程序包oracle.com/technetwork/database/windows/index-098976.html
-
"C:\OraHome_2\oci.dll " 可能是 32 位的,但你有一个 64 位的 Python。安装 64 位 Oracle 客户端,例如Instant Client 并确保它的库在您运行 Python 时位于 PATH 中的第一位(并且在您运行旧应用程序时可能不在 PATH 中的第一位)。不要忘记安装 Instant Client 页面上提到的 VS Redistributable。
-
一定要用pyodbc吗?我刚开始从 Python 连接到 Oracle 并使用 cx_Oracle,效果很好......