我正在尝试将unicode数据从MSSql复制到MySql。以下是我过去几天尝试的代码,但无法成功完成。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
import pymssql
################
#connection variables go here
#################
conms = pymssql.connect(host=MSdbAddress, user=MSsuser, password=MSpass, database=MSdbName, charset='UTF-8')
curms = conms.cursor()
conmy = MySQLdb.connect(host=MYdbAddress, user=MYsuser, passwd=MYpass, db=MYdbName, charset='utf8')
curmy = conmy.cursor()
curms.execute("select top 1 * from " + MSdbTableName )
ms_list = curms.fetchall()
ms_list_1
for row in ms_list:
for x in row:
if isinstance(x,int):
ms_list_1.append(x)
elif isinstance(x,unicode):
ms_list_1.append(x.encode('utf8'))
else:
ms_list_1.append(str(x))
curmy.execute("""insert into `MSdbTableName` values (%s, %s, %s)""", (ms_list_1[0], ms_list_1[1], ms_list_1[2])
当我尝试在不使用ms_list的情况下插入unicode文本时,它会运行文件 即
curmy.execute("""insert into `MSdbTableName` (Content) values (%s)""", ('शांति से क्रोध को जीतें। मृदुता से अभिमान को जीतें। सरलता से माया को जीतें। संतोष से लोभ को जीतें।'))
另外,当我检查ms_list的内容时,它会正确解码unicode。 即
print str(ms_list_1 [0])+ str(ms_list_1 [1])+ str(ms_list_1 [2])
但是我无法在MySql中插入它。我在网上尝试了一些解决方案,但我仍然遇到了2个错误
UnicodeDecodeError:'ascii'编解码器无法解码字节0xe0的位置 0:序数不在范围内(128)
TypeError:并非在字符串格式化期间转换所有参数
我错过了什么?