社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Gopal Matcha • 3 年前 • 1340 次点击  

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

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
 
1340 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    3 年前

我想你只需要更新一下:

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

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