【问题标题】:Why wont Python's SQLite3 Update为什么 Python 的 SQLite3 不更新
【发布时间】: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


【解决方案1】:

可能非常具体,但它没有更新的原因是在插入表格时,一些 ID 被转换为科学记数法。那些会找到他们的标题,因为我用于标题搜索的功能对此很敏感。我的错。

ID Title Filename Length
1.72986707541665e+ untitled 253c95c4b27116e.mp None
263857279641976794 ShowIWanttoWatchEp Videos/ShowIWantto 1144.0
185690842836020994 ShowIWanttoWatchEp Videos/ShowIWantto 1174.0
1.7317732968119e+6 untitled 9231941.m4v None
212666122173993805 ShowIWanttoWatchEp Videos/ShowIWantto 995.0
1.69406306986304e+ untitled hls-1.mp4 None
877482402128334556 ShowIWanttoWatchEp Videos/ShowIWantto 1214.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多