首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sqlit&python-只获取第一个结果

Sqlit&python-只获取第一个结果
EN

Stack Overflow用户
提问于 2010-03-31 22:13:34
回答 3查看 1.4K关注 0票数 5

这很奇怪(诚然,这是我第一次尝试python / sqlite),但是如果我执行fetchAll(),我似乎可以得到所有的行,但除此之外--不管我尝试了什么,总是在db中只返回第一行--第二次迭代停止了,因为返回了一个null。想知道我在python中编写这个代码有什么问题吗?分贝似乎没问题..。

代码语言:javascript
复制
con = sqlite3.connect('backup.db')
con.row_factory = sqlite3.Row
cur = con.cursor()
cur.execute('select * from tb1;')

for row in cur:
    try:
#       row = dataCur.fetchone()
        #if row == None: break
        print type(row)

        print ' Starting on: %i' % row[0]

        cleaner = Cleaner(scripts=True, remove_tags=['img'], embedded=True)
        try:
            cleaned = cleaner.clean_html(row[2]) #data stored in second col
            cur.execute('update tb1 set data = ? where id = ?;', (cleaned, row[0]))
        except AttributeError:
            print 'Attribute error'

        print ' Ended on: %i' % row[0]

    except IOError:
        print 'IOexception'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-31 22:17:38

您正在重用同一个游标来执行两个不同的查询。尝试使用两个不同的游标,看看它是否解决了您的问题。

票数 10
EN

Stack Overflow用户

发布于 2010-03-31 22:21:54

如果我没有弄错,第二次在游标上调用execute时,上一次调用的结果将被丢弃。

这就是为什么您可以使用fetchall,因为这会返回所有结果,然后再调用execute。

对于更新,请使用第二个游标,以避免第一个游标的结果无效。

票数 3
EN

Stack Overflow用户

发布于 2018-12-22 17:51:36

每次获取数据之前,都必须执行命令/SQL查询。fetchall()fetchone()等只获取已经执行的内容;因此,当您执行一次时,除非您已经执行了一个查询,否则您不能获取超过一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2556849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档