Python3 SQL Update没有提交

时间:2013-12-01 03:40:29

标签: python sql sqlite python-3.x

我有以下Python3代码:

def updateDB(databaseLoc, post_id, new_class):
    conn = sqlite3.connect(databaseLoc)
    curs = conn.cursor()
    vals = [new_class, post_id, ]
    curs.execute('UPDATE POST SET CLASSIFICATION=? WHERE POSTID=?', vals)
    conn.commit()
    conn.close()

偶尔用

调用
if js[0]['data']['children'][0]['data']['ups'] > 2000:
    print(post_id, "made it")
    updateDB('retrieved_data.db',1,post_id)

然而,即使在更新和提交之后,当我进入数据库时​​,没有任何改变(分类仍然设置为初始值0)。我手动测试了SQL字符串,它工作正常。

我有类似的插入代码,工作正常:

def pushToDB(databaseLoc, posts):
    conn = sqlite3.connect(databaseLoc)
    curs = conn.cursor()
    for p in posts:
        vals = [p.id, p.title, p.s, p.time, p.day, "", p.first, p.second, p.image, 0, ]
        try:
            curs.execute('INSERT INTO POST VALUES(?,?,?,?,?,?,?,?,?,?)',vals)
        except:
            pass
    conn.commit()
    conn.close()

Python3更新需要采取额外步骤吗?我查看了文档并且没有指定任何其他内容,但是它只提到更新once并且只是掩盖了它。我也发现python

中的更新示例很少

1 个答案:

答案 0 :(得分:1)

该功能的签名是:

def updateDB(databaseLoc, post_id, new_class):

但你似乎是用它来调用它:

updateDB(databaseLoc, new_class, post_id)

导致每次尝试更新帖子POSTID = 1,这可能不是您想要的。