使用python、mysql从数据库中选择的值更新最后输入的值
好的,我有一个表,表中有学生id,学生id被用作编辑列的标识符,但是如果同一个学生借了一本书两次,那么所有学生的值都会被编辑,我不想…我想最后输入的学生id数据被编辑,并使用Sl。不,这不是一个解决方案,因为它实际上是复杂。我正在使用python连接器。请帮忙:)提前谢谢 我现在使用的代码:使用python、mysql从数据库中选择的值更新最后输入的值,python,mysql,sql,database,sql-update,Python,Mysql,Sql,Database,Sql Update,好的,我有一个表,表中有学生id,学生id被用作编辑列的标识符,但是如果同一个学生借了一本书两次,那么所有学生的值都会被编辑,我不想…我想最后输入的学生id数据被编辑,并使用Sl。不,这不是一个解决方案,因为它实际上是复杂。我正在使用python连接器。请帮忙:)提前谢谢 我现在使用的代码: con = mysql.connect(host='localhost', user='root', password='monkey123', database='
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')
如果我正确地跟踪了您,那么您只需要更新一条与
where
条件匹配的记录。为了以可靠的方式完成此操作,您需要一个列来定义记录的顺序。它可以是一个日期,一个递增的id,或者其他。我假设这样的列存在于您的表中,称为ordering\u column
一个简单的选项是在UPDATE
语句中使用orderby
和LIMIT
,如下所示:
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(), )
请注意,我修改了您的代码,以便将输入值作为参数提供,而不是连接到查询字符串中。这是一个重要的更改,使您的代码更安全、更高效。我们如何判断最后输入的是哪一行?您需要一个列来定义行的顺序。我有一个sl。没有tht有自动增量,所以我可以使用tht吗,喜欢有最大sl的id。没有shud只有bedited@CoolCloud:只需将
ordering_column
替换为表的正确列即可。@CoolCloud:这是查询的一部分,用于选择满足条件的“最新”记录。