使用pyodbc从IBM DB2检索数据和相关错误

ymzxtsji  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(160)

我确认,我已经在StackOverflow中查看了多个关于类似问题的帖子,但仍然被下面的问题卡住,因此发帖寻求指导/指针。
下面是代码

import pypyodbc as pyodbc
import configparser

config = configparser.ConfigParser()
config.read('config.ini')

conn_str = 'DRIVER={' + config['db2']['driver'] + '};' \
            + 'SERVER=' + config['db2']['server'] + ';' \
            + 'DATABASE=' + config['db2']['database'] + ';' \
            + 'UID=' + config['db2']['uid'] + ';' \
            + 'PWD=' + config['db2']['password']
print(conn_str)

connection = pyodbc.connect(
    conn_str
)

cur = connection.cursor()

cur.execute('SELECT col_1, col_2 FROM schema.table_name LIMIT 2')
for row in cur:
    print (row)

代码执行的输出
第一个
配置文件

$ cat config.ini
[db2]
driver = 'IBM i Access ODBC Driver 64-bit'
server = 'hostname'
database = 'database'
uid = 'userid'
password = 'password'

ODBC安装程序和卸载程序命令的输出
第一个
我已仔细检查并确认驱动程序名称“IBM i Access ODBC Driver 64-bit”没有排印错误
操作系统信息x86_64 GNU/Linux
请提供有关如何调试问题的任何提示/指导?

ylamdve6

ylamdve61#

我认为您将模式名称与数据库名称混淆了。很可能您可以完全省略数据库名称(或将其保留为空字符串并默认为 *SYSBAS)。相反,您可以指定DefaultLibraries参数。
有关有效连接字符串(和odbc.ini)关键字的信息,请参见IBM文档here
同样地,您可以省略PORTPROTOCOL和HOSTNAME保留字,因为此驱动程序不支援这些保留字。
这样,odbc.ini看起来就像下面这样简单:

[db2]
Driver           = IBM i Access ODBC Driver 64-bit
DefaultLibraries = 'database'
SYSTEM           = hostname

相关问题