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: 文字列のフォーマット中にすべての引数が変換されるわけではありません
何が足りないのですか?