2
编辑: 回答:我需要为'einlesen()'函数创建另一个游标。我想第一次在Python中使用SQLite3,所以请原谅我的(也许)可怕的语法;) 我试图建立一种DVD数据库,从亚马逊直接获取必要的信息(演员等) 。整个程序基于SQLite3和Python 2.7。Python - for loop过早退出
一切运作良好,除了我的plannes“更新”功能。
def update():
print 'Update Datenbank....bitte warten....'
cursor.execute('''SELECT titel, amazon, erhalten, ausgeliehen FROM movies''')
antwort = 'update'
for row in cursor:
stelle = row[1]
ausg = row[2]
erh = row[3]
einlesen(stelle, ausg, erh, antwort)
print row[0]
raw_input('Update komplett!')
menu()
问题是,循环在一次迭代后退出。
输出看起来是这样的:
Update Datenbank....bitte warten....
#a few seconds pass
The Day After Tommorrow
Update komplett!
因此,我认为,循环和函数调用是正确的(数据库中获取正确的更新 - 由“einlesen()”函数完成),但也有更多的迭代,不只是一个... 所以我的问题是:什么是错的? ;)
这里是(略) 'einlesen()' 函数:
def einlesen(asin, ausg, erh, antwort):
d = {}
infos = urllib.urlopen('http://www.amazon.de/dp/'+asin).read()
titel = infos[infos.find('Kaufen Sie')+11:infos.find('nstig ein')-3]
art = 'dvd'
infos = remove_html_tags(infos)
infos = infos[infos.find('Darsteller: '):infos.find('Durchschnittliche')]
infos = infos.split('\n')
for x in range(200):
try:
infos.remove('')
except:
break
for element in infos:
d[element.split(': ')[0].lstrip()] = element.split(': ')[1]
#(excluded the whole Info-Scraping process)
if antwort == 'update':
movie = dauer, art, regie, jahr, fsk, darsteller, titel
sql = ('''UPDATE movies SET laufzeit = ?, art = ?, regie = ?, jahr = ?, fsk = ?, darsteller = ? WHERE titel = ?''')
cursor.execute(sql, movie)
connection.commit()
else:
menu()
感谢您的帮助。
感谢您的快速帮助! 我究竟如何创建另一个光标? –
请参阅我的答案的编辑。 – 2012-09-04 08:02:05
再次感谢!那个伎俩。 –