python - 使用 pyodbc 连接到 IBM i 的 Db2 时出现问题
问题描述
我正在尝试使用 pyodbc 和 ibm db2 odbc 驱动程序连接到带有 db2 的 as400。
import pyodbc
connection = pyodbc.connect(
driver='{IBM DB2 ODBC DRIVER}',
system='192.168.1.100',
uid='user',
pwd='pass')
c1 = connection.cursor()
#this is meaningless sql, i just want the connection
c1.execute('select * from libname.filename')
for row in c1:
print (row)
运行这个给了我这个错误
python pydata.py
Traceback (most recent call last):
File "C:\Users\tca\Desktop\ScriptingSTuff\pydata.py", line 3, in <module>
connection = pyodbc.connect(
pyodbc.OperationalError: ('08001', '[08001] [IBM][CLI Driver] SQL1013N The database alias name or database name "" could not be found. SQLSTATE=42705\r\n (-1013) (SQLDriverConnect)')
有任何想法吗?
这都是win10下的
编辑:添加这个“database='s10c38ft'”
import pyodbc
connection = pyodbc.connect(
driver='{IBM DB2 ODBC DRIVER}',
system='192.168.1.100,8471',
database='s10c38ft',
uid='user',
pwd='pass')
c1 = connection.cursor()
c1.execute('select * from libname.filename')
for row in c1:
print (row)
让它挂在闪烁的光标上,我什至不能用 CTRL+C 来结束它,我必须关闭 cmd。
解决方案
正确的驱动程序名称应该是 IBM i Access ODBC Driver
(但请参阅下面的注释)。除此之外,您的第一个示例是正确的:
connection = pyodbc.connect(
driver='{IBM i Access ODBC Driver}',
system='192.168.1.100',
uid='user',
pwd='pass')
如果这不起作用,则主要有两种可能性:
您正在使用旧的 ODBC 驱动程序。如果您使用旧的 iSeries Access(在这种情况下驱动程序名称为
iSeries Access ODBC Driver
)或什至旧的 Client Access(驱动程序名称Client Access ODBC Driver (32-bit)
),就会发生这种情况。如果您为驱动程序选择适当的名称,它将起作用。您正在使用不是 IBM i 的 ODBC 驱动程序。Db2 系列中最常用的成员是 Db2 for LUW(Linux、Unix、Windows),但还有其他成员。这些都不适合你。
您可以通过调用找到您已安装的确切 ODBC 驱动程序名称的列表pyodbc.drivers()
。如果您没有我上面提到的任何一个,那么您就没有合适的驱动程序。您需要的 ODBC 驱动程序是此处描述的驱动程序。
推荐阅读
- python - “import json”在 IDLE 中运行良好,但在 Windows 7 cmd 中失败
- php - Wordpress 循环浏览帖子
- algorithm - 3D 中的整流罩数据点
- android - 模拟器:模拟器:错误:使用相同的 AVD 运行多个模拟器是一项实验性功能
- node.js - 在 MarkoJs “入门”教程中遇到错误
- reactjs - 一个节点不能在状态树中存在两次( mobx-state-tree )
- parse-platform - 解析服务器 - 如何从云代码中的 ParseGeoPoint 中提取经度+纬度
- spring-boot - Spring Boot - 无法配置 CORS 选项策略
- unit-testing - 在 UWP/WinIot 核心中找不到 ViewModelLocator
- python - xpath 刮出来的空白,是什么问题?