Py学习  »  Python

如何用python[duplicate]更新sqlite3中的记录

Gopal Matcha • 3 年前 • 1439 次点击  

这里,在更新部分,将创建一个新的副本,而不是更新现有记录。请帮忙!

def addBooks(title, quantity):
    c.execute('SELECT * FROM books')
    for i, j in c.fetchall():
        if i == title:
            c.execute('UPDATE books SET quantity = ? WHERE title = ?', (j+quantity, title))
            conn.commit()
        else:
            c.execute('INSERT INTO books VALUES (?, ?)', (title, quantity))
            conn.commit()
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128792
 
1439 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    4 年前

我想你只需要更新一下:

def addBooks(title, quantity):
    c.execute('UPDATE books SET quantity = quantity + ? WHERE title = ?', (quantity, title,))
    conn.commit()

您当前的代码有多个问题。首先,做什么 SELECT * 在第一个示例中(不必要的),select在语义上是不正确的,因为您应该明确列出所需的列。此外,不需要迭代此选择的结果集来更新每个记录。 UPDATE 已经是一个基于集合的操作,它将针对表中的每个记录。也没有必要做一个 INSERT 如果我能理解你的要求,就给你。