无法使用MySQL数据写入文件

时间:2012-06-14 03:57:44

标签: python mysql database file file-io

我收到此错误:

TyperError: sequence item 2: expected string, long found

以下是my code

import MySQLdb
connection = MySQLdb.connect (host = "localhost", user = "root", passwd = "*****", db = "test")
cursor = connection.cursor ()
cursor.execute ("SELECT * FROM names")
data = cursor.fetchall ()
no = []
no += ["<users>\n"]
for row in data :
        no += ["        <user id='", row[0], "' name='", row[1], "' blend='", row[2], "'/>\n"]
        no += ["                <nick color='0x", row[3], "' font='", row[4], "'/>\n"]
        no += ["                <glow color='0x", row[5], "' alpha='", row[6], "' blurX='", row[7], "' blurY='", row[8], "' strength='", row[9], "' quality='", row[10], "'/>\n"]
        no += ["        </user>\n", row[11]]
cursor.close ()
connection.close ()
no += ["</users>"]
s = ''.join(no)
file = open('test.xml','w')
file.write(s)

2 个答案:

答案 0 :(得分:1)

不是按照你的方式将字符串连接到子列表,而是可以执行以下操作

# Don't do this
no += ["        <user id='", row[0], "' name='", row[1], "' blend='", row[2], "'/>\n"]

# Do this instead
no += ["        <user id='%s' name='%s' blend='%s'/>\n" % (row[0], row[1], row[2])]

答案 1 :(得分:1)

您必须先使用str()将检索到的数据转换为字符串,以便在row[INDEX]所说的任何地方,您必须说:str(row[INDEX])。例如str(row[3])