Форум сайта python.su
568
ruff3dТут ошибка, обрати внимание на ковычки
sql='INSERT INTO T1(num, name, val, dom,kod,sin,rar)' VALUES (%s,%s,%s,%s,%s,%s,%s)'
Офлайн
568
ruff3dОператор присваивания в условии работать не будет
if i=7: i=0
Офлайн
0
эти мелочи я уже сам увидел…
На такое у меня APTANA ругается)) так что на мелкие нюансы не стоит обращать внимание…
вы лучше скажите про лучший алгоритм разбора таблицы… чем мой…
Офлайн
72
Что-то из вашего кода не очень понятно что за преобразования вы пытаетесь с ячейками сделать, ну а в базу примерно так(создание курсора опустил), данные всей пачкой в базу
SQL = "INSERT INTO T1(num, name, val, dom, kod, sin, rar) VALUES (%s,%s,%s,%s,%s,%s,%s)" data = [] for trs in doc.cssselect('table tr'): for tr in trs: data.append(tuple(x.text for x in tr.cssselect('td'))) cursor.executemany(sql, data)
SQL = "INSERT INTO T1(num, name, val, dom, kod, sin, rar) VALUES (%s,%s,%s,%s,%s,%s,%s)" for trs in doc.cssselect('table tr'): for tr in trs: cursor.execute(sql, tuple(x.text for x in tr.cssselect('td'))
Офлайн
0
вылазит ошибка типа…
cursor.execute(sql, tuple(x.text for x in tr.cssselect('td')))
File “e:\python27\lib\MySQLdb\cursors.py”, line 159, in execute
query = query % db.literal(args)
TypeError: not enough arguments for format string
Офлайн
72
ruff3d
вылазит ошибка типа…
cursor.execute(sql, tuple(x.text for x in tr.cssselect('td')))
File “e:\python27\lib\MySQLdb\cursors.py”, line 159, in execute
query = query % db.literal(args)
TypeError: not enough arguments for format string
for trs in doc.cssselect('table tr')
SQL = "INSERT INTO T1(num, name, val, dom, kod, sin, rar) VALUES (%s,%s,%s,%s,%s,%s,%s)" for tr in doc.cssselect('table tr'): cursor.execute(sql, tuple(x.text for x in tr.cssselect('td')))
Отредактировано PooH (Июль 26, 2012 13:32:12)
Офлайн
14
ruff3dСкуля. Осиль параметризированные запросы.
sql='INSERT INTO T1(num, name, val, dom,kod,sin,rar)' VALUES (%s,%s,%s,%s,%s,%s,%s)'
Офлайн
0
все отлично… только строки в юникоде
('365', ‘2 (300), 21.04.08’, ‘01534’, u'\u041c\u0435\u0442\u0430\u043b\u0438 \u0442\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0456\u044f
как в кортеже это сразу исправить…?
Офлайн
14
А надо ли? Мускул юникод не принимает?
Офлайн
0
cursor.execute(sql, tup) File "e:\python27\lib\MySQLdb\cursors.py", line 159, in execute query = query % db.literal(args) TypeError: not all arguments converted during string formatting ERROR: Module: first could not be imported (file: E:\python\py2.7\first.py).
Отредактировано ruff3d (Июль 26, 2012 17:00:50)
Офлайн