将Python中的unicode数据从MSSql复制到MySql错误

时间:2012-11-23 09:40:19

标签: python-2.7 mysql-python pymssql

我正在尝试将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:并非在字符串格式化期间转换所有参数

我错过了什么?

0 个答案:

没有答案