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)