Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python、mysql从数据库中选择的值更新最后输入的值_Python_Mysql_Sql_Database_Sql Update - Fatal编程技术网

使用python、mysql从数据库中选择的值更新最后输入的值

使用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='

好的,我有一个表,表中有学生id,学生id被用作编辑列的标识符,但是如果同一个学生借了一本书两次,那么所有学生的值都会被编辑,我不想…我想最后输入的学生id数据被编辑,并使用Sl。不,这不是一个解决方案,因为它实际上是复杂。我正在使用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')

如果我正确地跟踪了您,那么您只需要更新一条与
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:这是查询的一部分,用于选择满足条件的“最新”记录。