【发布时间】:2021-06-05 22:25:11
【问题描述】:
这在之前有效,我的一些行有有效的条目,但很多都没有......
def setLength(vid, seconds):
db_conn.execute("UPDATE Videos SET length= '" + str(seconds//1) + "' WHERE ID='"+str(vid)+"';")
db_conn.commit()
result = my_cursor.execute("SELECT length, title FROM Videos WHERE ID = " + "'" + str(vid) + "';")
for row in result:
print(vid, row[0])
print("gets here")
给出输出:
gets here
即使我使用有效的 ID 运行它。
编辑:我可以使用相同的 ID 从该行获取标题列,但尝试更新长度列只会使单元格为空。
【问题讨论】:
-
有报错吗? '有些行有有效的条目,但其他行没有'是什么意思。是什么让它们无效?
-
我认为您希望该函数在您的
for循环中打印一行,但它没有打印该行。所以,我认为如果没有db_conn语句,您也会遇到同样的问题。您没有更新问题。记录ID不在my_cursor后面的数据库中。 -
查看编辑。 ID 肯定在数据库中,因为我可以用它来读取视频标题。有些视频出于某种原因有长度,而其他视频只是一个空字符串。我无法判断它的正面或反面。
-
如this question 的答案中所述,如果您使用参数替换,它是否有效?请注意,sqlite 使用
?作为占位符,而不是%s。例如dbconn.execute("UPDATE Videos SET length= ? WHERE ID= ?", (seconds//1, vid))(选择类似)
标签: python sqlite sql-update