我使用Python 3.7连接到DB2-LUW数据库,一些查询出错:SQL 0332 N不支持从源代码页“1252”到目标代码页“874”的字符转换。***。
首先,我尝试通过重新创建一个新表来测试Python与DB2上的数据库的连接。
我插入1条记录并将其读回。当我读取插入的行时,我得到错误。
在交互式Python中的结果:
import ibm_db_dbi as dbi
print(dbi.__version__)
3.0.2
conn = dbi.connect("DATABASE=<db>;HOSTNAME=<hostname>;PORT=<port>;PROTOCOL=TCPIP;UID=<user>;PWD=<pwd>;", "", "")
c = conn.cursor()
c.execute('create table ibm_db_tst (col1 int)')
Out[5]: True
c.execute('insert into ibm_db_tst values(2)')
Out[6]: True
c.execute('select col1 from ibm_db_tst')
Out[7]: True
print(c.fetchone())
追溯(最近一次调用):
文件“C:\Users\2400566\Anaconda3\lib\site-packages\ibm_db_dbi.py”,第1449行,in _fetch_helper row = ibm_db.fetch_tuple(self.stmt_handler)
无法检索SQLCODE=-332lumn信息:[IBM][CLI Driver][DB2/NT 64]不支持SQL 0332 N从源代码页“1252”到目标代码页“874”的字符转换。
在处理上述异常的过程中,又出现了一个异常:
追溯(最近一次调用):
文件“",第1行,打印(c.fetchone())
文件“C:\Users\2400566\Anaconda 3\lib\site-packages\ibm_db_dbi.py”,第1475行,在fetchone row_list = self._fetch_helper(1)中
文件“C:\Users\2400566\Anaconda3\lib\site-packages\ibm_db_dbi.py”,第1456行,in _fetch_helper raise self.messages[len(self.messages)- 1]
SQLCODE=-332_dbi::错误:[IBM][CLI Driver][DB2/NT 64] SQL 0332 N不支持从源代码页“1252”到目标代码页“874”的字符转换。
我不知道出了什么问题?需要建议
我的Python版本是Python 3.7.7,运行在Windows 10 PC x64上
DB2位于Windows Server 2012 x64上。
DB2版本是DB2 v11.1.0.1527。
数据库区域:GB数据库代码页:1252数据库代码集:1252数据库国家/地区代码:44
先谢谢你了。
2条答案
按热度按时间u5rb5r591#
如果您的python脚本使用db2dsdriver连接到服务器上的数据库,请尝试将DisableUnicode关键字设置为0,以强制使用unicode代码页(即1208)在Windows上。
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.swg.im.dbclient.config.doc/doc/r0054636.html
ac1kyiln2#
将环境变量DB2 CODEPAGE设置为1208。
感谢用户@mao在评论中说了这句话。添加它作为更好的可见性的答案。