我有以下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
中的更新示例很少答案 0 :(得分:1)
该功能的签名是:
def updateDB(databaseLoc, post_id, new_class):
但你似乎是用它来调用它:
updateDB(databaseLoc, new_class, post_id)
导致每次尝试更新帖子POSTID = 1
,这可能不是您想要的。