首页 > 解决方案 > 使用 python 和 mysql 从数据库中的一组值中更新最后输入的值

问题描述

好的,所以我有一个包含学生 ID 的表,并且学生 ID 用作编辑列的标识符,但是如果同一个学生两次借出一本书,那么所有学生的价值都将被编辑,这是我不想要的......我想编辑最后输入的学生 ID 数据并使用 Sl.No 在这里不是解决方案,因为它实际上很复杂。我正在使用 python 连接器。请帮助:)提前谢谢

我现在使用的代码:

con = mysql.connect(host='localhost', user='root',
                    password='monkey123', database='BOOK')
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')

标签: pythonmysqlsqldatabasesql-update

解决方案


如果我正确地关注了您,您只想更新一条符合where条件的记录。为了以可靠的方式完成此操作,您需要一列来定义记录的顺序。它可以是日期、递增的 id 或其他。我假设这样的列存在于您的表中并称为ordering_column.

一个简单的选项是在语句中使用ORDER BY和,如下所示:LIMITUPDATE

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(), )

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


推荐阅读