ValueError:基为10的int()的文本无效:Python中的“NewFilmLikes”

2024-09-29 17:13:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从SQLite3数据库中获取一个值,并将其放入一个名为FilmLikes的变量中,然后向其中添加一个,并将其存储在变量NewFilmLikes中。然后,我尝试将数据库中此框的值更改为“NewFilmLikes”,但我总是遇到这样的问题:

ValueError:以10为基数的int()的文本无效:“NewFilmLikes”

以下代码显示:

FilmLikes=i[2]
NewFilmLikes=(int(FilmLikes))+1
filmUpdate=("UPDATE HORRORALL SET likes = ? WHERE number = 1"(NewFilmLikes))
c.execute(filmUpdate)
conn.commit()

以下是我的代码:

^{pr2}$

Tags: 代码文本数据库updatewheresqlite3int基数
1条回答
网友
1楼 · 发布于 2024-09-29 17:13:42

如果不了解更多有关设置的信息,很难正确回答。
请注意,您所指的特定错误(ValueError: invalid literal for int() with base 10: 'NewFilmLikes')通常发生在您获得十进制而不是整数时。在

这里有一个大概的答案。在

  1. 最好不要使用SELECT *,因为它隐藏了您要检索的内容。指定,例如SELECT film_id, file_name, no_of_likes FROM horrorall,这样您就可以看到要检索的内容和位置。在
  2. 您使用find_film检索整个电影列表,然后循环查找哪个。SQL有一个find函数,叫做WHERE,您可以在film_update部分使用它。如果您有用户输入的ID或名称,那么您可以只调用您需要的记录。E、 g."SELECT film_id, file_name, no_of_likes FROM horrorall WHERE film_id = ?" (filmChoice,)
  3. 注意,参数化查询使用元组,即使只有一个参数-因此它是(filmChoice,)加逗号(对于filmUpdate您需要(x,)
  4. filmUpdate只更新第一部电影。我假设是因为您的if ...循环继续执行所有可能的选项?您可以通过在那里放置另一个?来完成这一任务,例如filmUpdate=("UPDATE HORRORALL SET likes = ? WHERE number = ?"(x,i[0]))
  5. 用户如何知道要选择哪种胶卷?在他们给你一个号码之前,你是不会检索名单的!在

把所有这些放在一起,这里有一个例子。注意,这远不是理想的方法,我不想一次就向你抛出太多的想法!在

# Get the whole list of films to show to the user
find_film = c.execute("SELECT film_id, film_name FROM HORRORALL")
# Present the list for selection
for films in find_film:
    print(str(films[0]) + '. ' + films[1])
# Get the users input as an integer
filmChoice = int(input('Please choose which number you would like to like: '))
# Fetch the number of likes of the selected film
film_likes = c.execute('SELECT likes FROM HORRORALL WHERE film_id = ?' (filmChoice,))
# Send the update back to the database
c.execute("UPDATE HORRORALL SET likes = ? WHERE film_id = ?"(int(film_likes[0]) + 1, filmChoice)
conn.commit()

相关问题 更多 >

    热门问题