在sqlite中使用列名查询失败

2024-09-30 01:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个来自Assigning column names in a txt file in python的扩展问题

我有以下代码。我从一个xml文件中提取数据并将其保存到一个txt文件中。然后我将它导入sqlite3。在这里,我可以看到整个数据库。但是,当我查询时,我只能使用programID。剩下的,我都失败了。我不知道我哪里做错了。谢谢你的帮助。谢谢你

try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

root = ET.parse("complete.xml")

f = open("conductor.txt", "w") # Open the file in (w)rite mode

f.write("programID, season, workID, composerLastName, composerFirstName, workTitle, OpusNumber, conductorLastName, conductorFirstName\n")
for program in root.findall('program'):
    programID = program.find('programID').text
    season = program.find('season').text
    worksInfo = program.find('worksInfo')
    if worksInfo is None:
        work = ''
    else:
        work = worksInfo.find('work')
        if work is None:
            workID = ''
            composerName = ''
            workTitle = ''
            conductorName = ''
        else:
            workID = work.get('ID')
            composerName = work.find('composerName')
            if composerName is None:
                composerName = ''
            else:
                composerName = composerName.text
                composerLastName = composerName.split(',')[0]
                if len(composerName.split(',')) > 1:
                    composerFirstName = composerName.split(',')[1]
                else:
                    composerFirstName = ''
            workTitle = work.find('workTitle')
            if workTitle is None:
                workTitle = ''
            else:
                workTitle = workTitle.text
                WorkTitle = workTitle.split(',')[0]
                if len(workTitle.split(',')) > 1:
                    OpusNumber = workTitle.split(',')[1]
                    conductorName = work.find('conductorName')
                    if conductorName is None:
                        conductorName = ''
                    else:
                        conductorName = conductorName.text
                        conductorLastName = conductorName.split(',')[0]
                        if len(conductorName.split(',')) > 1:
                            conductorFirstName = conductorName.split(',')[1]
                        line = programID + "," + season + "," + workID + "," + composerLastName + ',' + composerFirstName + ',' + WorkTitle + "," + OpusNumber + ',' + conductorLastName + ',' + conductorFirstName + "\n"
                        f.write(line)

f.close()

Tags: textinnoneifisxmlfindprogram

热门问题