问题描述
python 脚本在 IBM i 上运行并使用 ibm-db 访问 IBM i 上的本地 DB2 数据库
python 3.6.9 & ibm-db 2.0.5.9
DB2 默认编码 (CCSID) 是 37 & python 是 'utf-8'
突然间,python 脚本开始在 1 个盒子上失败。相同的 python 脚本正在其他盒子上工作,所以我怀疑数据或环境设置问题。这不是数据问题,因为当 python 使用不同的 db 包 pyodbc 访问 Windows 上的相同数据时,它会起作用。这不是 env 设置问题,因为 python 版本和第 3 方软件包版本与其他工作盒匹配。
代码片段:
row = ibm_db.fetch_row(stmt)
while(row):
transactions = []
prvStrmName = ibm_db.result(stmt,'STRMNAME') # failing here
strmId = ibm_db.result(stmt,'STREAMID')
prvStrmId = strmId
我尝试将其编码为“utf-8”,但没有帮助。
prvStrmName = ibm_db.result(stmt,'STRMNAME').encode('utf-8')
不知道哪里出了问题。我会很感激任何帮助/指示吗?
2020-12-22 11:17:44,959 - root - ERROR - 'utf-8' codec can't decode byte 0xdd in position 38: invalid continuation byte
Traceback (most recent call last):
File "voianalytics.py",line 170,in <module>
summarize_income_stream(stmt)
File "voianalytics.py",line 69,in summarize_income_stream
prvStrmName = ibm_db.result(stmt,'STRMNAME')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xdd in position 38: invalid continuation byte
ibm_db.client_info(conn) 在 IBM i 上的结果是:
DRIVER_NAME: string(13) "QSQCLI.SRVpgm"
DRIVER_VER: string(5) "07030"
DATA_SOURCE_NAME: string(8) "XXXXXXXX"
DRIVER_ODBC_VER: string(4) "3.00"
ODBC_VER: string(0) ""
ODBC_sql_CONFORMANCE: string(4) "CORE"
APPL_CODEPAGE: int(1208)
CONN_CODEPAGE: int(1208)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)