mysql查询结果转xml_将MySQL查询转换为XML时出现Python编码错误

我生成的自定义XML文件必须使用此脚本的特定格式。它查询数据库并将结果转换为一个大的xml文件。我对从库存零件清单到员工记录的多个数据库执行此操作。在import csv

import StringIO

import time

import MySQLdb

import lxml.etree

import lxml.builder

from datetime import datetime

import string

from lxml import etree

from lxml.builder import E as buildE

from datetime import datetime

from time import sleep

import shutil

import glob

import os

import logging

def logWrite(message):

logging.basicConfig(

filename="C:\\logs\\XMLSyncOut.log",

level=logging.DEBUG,

format='%(asctime)s %(message)s',

datefmt='%m/%d/%Y %I:%M:%S: %p'

)

logging.debug(message)

def buildTag(tag,parent=None,content=None):

element = buildE(tag)

if content is not None:

element.text = unicode(content)

if parent is not None:

parent.append(element)

return element

def fetchXML(cursor):

logWrite("constructing XML from cursor")

fields = [x[0] for x in cursor.description]

doc = buildTag('DATA')

for record in cursor.fetchall():

r = buildTag('ROW',parent=doc)

for (k,v) in zip(fields,record):

buildTag(k,content=v,parent=r)

return doc

def updateDatabase 1():

try:

conn = MySQLdb.connect(host = 'host',user = 'user',passwd = 'passwd',db = 'database')

cursor = conn.cursor()

except:

sys.exit(1)

logWrite("Cannot connect to database - quitting!")

cursor.execute("SELECT * FROM database.table")

logWrite("Dumping fields from database.table into cursor")

xmlFile = open("results.xml","w")

doc = fetchXML(cursor)

xmlFile.write(etree.tostring(doc,pretty_print=True))

logWrite("Writing XML results.xml")

xmlFile.close()

出于某种原因,我从excel电子表格导入的一个新数据库出现了其他数据库没有的编码错误。这就是错误

^{pr2}$

我尝试通过将buildTag函数改为如下所示来显式编码为ascii:def buildTag(tag,parent=None,content=None):

element = buildE(tag)

if content is not None:

content = str(content).encode('ascii','ignore')

element.text = content

if parent is not None:

parent.append(element)

return element

这还是没用。在

我能做些什么来阻止这一切吗?我无法逃离它们,因为我不能让“\x92”作为输出出现在记录中。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值