Написал скрипт, который парсит XML-файл, вытягивает оттуда нужные данные и заносит их в таблицу БД в виде SQL-запроса.
# -*- coding: utf8 -*- import MySQLdb import urllib2 import urlparse from xml.dom.minidom import parse def my_get(): url = open('D:\excel ver 3.xml') xml = parse(url) name = xml.getElementsByTagName('Workbook') for node in name: el = node.getElementsByTagName('Cell') title = [] sql_ = [] i = 0 j = 0 z = 0 zm = 0 while i < len(el): if (el[i].hasAttribute('ss:StyleID')) and (el[i].attributes['ss:StyleID'].value == "s274"): title.append(el[i].getElementsByTagName('Data')[0].firstChild.nodeValue) print title[j] j += 1 i += 1 print i print j print repr(title).decode("unicode_escape") con = MySQLdb.connect(host="localhost", user="root", passwd="vertrigo", db="moodle", use_unicode=True, charset='utf8') cur = con.cursor() while z < j: zm = z+1 sql_[z]="UPDATE mdl_course_sections SET name='"+title[z]+"' WHERE (course='12' AND section='1');" try: cur.execute(sql_[z]) except MySQLdb.DatabaseError, err: print u"Ошибка:", err else: print u"Запрос успешно выполнен" con.commit() z += 1 cur.close() con.close()
При запуске возникает следующее:
Теоретические основы проектирования информационных систем
Методология проектирования ИС
Подходы и методики проектирования ИС
Внедрение, сопровождение, обслуживание и развитие ИС
570
4
Traceback (most recent call last):
File “<pyshell#2>”, line 1, in <module>
my_parser4.my_get()
File “C:\Python26\my_parser4.py”, line 32, in my_get
sql_=“UPDATE mdl_course_sections SET name='”+title+“' WHERE (course='12' AND section='1');”
IndexError: list assignment index out of range
Видно, что j становится равным 4, а я ведь потом обращаюсь к элементы с нулевым индексом. Не понимаю, почему вылезает list assignment index out of range