Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-for循环出口';过早地';_Python_For Loop_Sqlite - Fatal编程技术网

Python-for循环出口';过早地';

Python-for循环出口';过早地';,python,for-loop,sqlite,Python,For Loop,Sqlite,编辑: 答:我需要为“einlesen()”函数创建另一个游标 这是我第一次在Python中使用SQLite3,请原谅我(可能)糟糕的语法;) 我试图建立一个DVD数据库,直接从亚马逊获取必要的信息(演员等)。整个程序基于SQLite3和Python2.7 除了我的plannes“更新”功能外,一切都很好 问题是,循环在一次迭代后退出 输出如下所示: Update Datenbank....bitte warten.... #a few seconds pass The Day After To

编辑: 答:我需要为“einlesen()”函数创建另一个游标

这是我第一次在Python中使用SQLite3,请原谅我(可能)糟糕的语法;) 我试图建立一个DVD数据库,直接从亚马逊获取必要的信息(演员等)。整个程序基于SQLite3和Python2.7

除了我的plannes“更新”功能外,一切都很好

问题是,循环在一次迭代后退出

输出如下所示:

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()

感谢您的帮助。

在您仍然循环查看
选择的结果时,执行
更新。这将删除第一个
游标的结果。execute()

使用第二个光标

编辑:

cur1 = con.cursor()
cur2 = con.cursor()

cur1.execute("SELECT ...")
for row in cur1:
    cur2.execute("UPDATE ...")

谢谢你的快速帮助!我该如何创建另一个光标?再次感谢!这就成功了。
cur1 = con.cursor()
cur2 = con.cursor()

cur1.execute("SELECT ...")
for row in cur1:
    cur2.execute("UPDATE ...")