2

MSSql から MySql に Unicode データをコピーしようとしています。以下は、過去数日間試しているコードですが、正常に実行できません。

#!/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 テキストを挿入しようとすると、動作します file ie

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 に挿入できません。Web でいくつかの解決策を試しましたが、まだ 2 つのエラーで立ち往生しています

UnicodeDecodeError: 'ascii' コーデックは位置 0 のバイト 0xe0 をデコードできません: 序数が範囲外です (128)

TypeError: 文字列のフォーマット中にすべての引数が変換されるわけではありません

何が足りないのですか?

4

0 に答える 0