最近工作的时候,要将数据逐条插入到db2数据库里面,我使用的是db2的python接口ibm_db,然而我要运行的sql语句里面有中文。我开始用得python3.6,发现没有这个问题。但是因为历史原因,代码需要用python2.7跑,结果再跑同样得sql语句得时候,出现了上面这个错误。
out_stmt = ibm_db.exec_immediate(conn,out_sql)
真的是太坑爹了,百度了半天没有解决办法。
然后偶然在Google上面得一个小角落发现了10年有人输入俄文的时候,碰到的同样的问题。上面说出现这个问题是因为you got this error because your update sql contains some non ASCII characters。sql语句里面有一些不是ASCII字符,所以会出现这个问题。
然后上面也给出了解决方案,因为我的sql语句是utf-8编码的,所以把上面的sql语句改为:
out_stmt = ibm_db.exec_immediate(conn,unicode(out_sql,"utf-8"))
然后问题就解决了,开森。
最后贴一下google链接吧https://groups.google.com/forum/#!topic/ibm_db/c77sQFUyJkM