用python,mysql从数据库中的一组值中更新最后输入的值

lndjwyie  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(83)

好了,我有一个表,其中有学生id和学生id是作为标识符来编辑列,但如果同一个学生借了一本书两次,那么所有的学生值将b编辑,我不想....我想最后输入的数据的学生id b编辑和使用一个Sl.没有是一个解决方案,因为它实际上是复杂的。我使用Python连接器。请帮助:)提前感谢
我现在使用的代码:

con = mysql.connect(host='localhosT', user='root',
                    password='*****', database='DB')
c = con.cursor()
c.execute(
    f"UPDATE library set `status`='Returned',`date returned`='{str(cal.selection_get())}' WHERE `STUDENT ID`='{e_sch.get()}';")
c.execute('commit')
con.close()
messagebox.showinfo(
    'Success', 'Book has been returned successfully')
zbq4xfa0

zbq4xfa01#

如果我理解正确的话,您只想更新一条符合where条件的记录。为了以可靠的方式完成此操作,您需要一个列来定义记录的顺序。它可以是一个日期,一个递增的id,或者其他。我假设这样的列存在于你的表中,名为ordering_column
一个简单的选项是在UPDATE语句中使用ORDER BYLIMIT,如下所示:

sql = """
    UPDATE library 
    SET status = 'Returned', date returned = %s 
    WHERE student_id = %s
    ORDER BY ordering_column DESC
    LIMIT 1
"""
c = con.cursor()
c.execute(sql, (str(cal.selection_get()), e_sch.get(), )

请注意,我修改了代码,因此输入值作为参数给出,而不是连接到查询字符串中。这是一个重要的变化,它使你的代码更安全,更高效。

相关问题