2

我正在尝试将 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。IE

打印 str(ms_list_1[0]) + str(ms_list_1[1]) + str(ms_list_1[2])

但我无法将其插入 MySql。我在网上尝试了一些解决方案,但仍然遇到 2 个错误

UnicodeDecodeError:“ascii”编解码器无法解码位置 0 中的字节 0xe0:序数不在范围内(128)

TypeError:字符串格式化期间并非所有参数都转换了

我错过了什么?

4

0 回答 0