Python 如何在更新时获取最后一行id?

Python 如何在更新时获取最后一行id?,python,mysql,sql,mysql-python,Python,Mysql,Sql,Mysql Python,我是mysql的初学者,可能是我的错,我不知道如何解决这个问题。 这是我的表的结构:- CREATE TABLE `nearest_product_type` ( `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `created` datetime NOT NULL, `modified` datetime NOT NULL, `name` varchar(15) NOT NULL UNIQUE ) ; 这是我

我是mysql的初学者,可能是我的错,我不知道如何解决这个问题。 这是我的表的结构:-

CREATE TABLE `nearest_product_type` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `created` datetime NOT NULL,
    `modified` datetime NOT NULL,
    `name` varchar(15) NOT NULL UNIQUE
)
;
这是我正在尝试的代码:-

base = MySQLdb.connect (host="localhost", user = "root", passwd = "sheeshmohsin", db="points")
basecursor = base.cursor()
queryone = """INSERT INTO nearest_product_type (name,created,modified) VALUES (%s,%s,%s) ON DUPLICATE KEY UPDATE name=name """
category = "Indica"
valueone = (category,datetime.datetime.now(),datetime.datetime.now())
basecursor.execute(queryone, valueone)
product_id = basecursor.lastrowid
basecursor.close()
base.commit()
base.close()
print product_id
在第一次运行这个python脚本时,当category不唯一时,它可以正常工作,但在第一次使用相同的category再次运行时,最后一行id返回0。但是我需要更新的最后一行的id


当我检查表中的行时,自动递增也起作用,假设我运行脚本四次,第一次当category是唯一的时,id是1,假设第四次出现另一个唯一的category,那么分配给这一行的id是4,但它应该是2,因为它是第二行。如何解决此问题?

此处的“复制密钥更新”部分将不起作用,因为该密钥是“自动增量”列,它将永远不会获得重复项

几乎可以肯定的是,这个子句导致了意外的计数,特别是考虑到name的唯一设置


您可以尝试使用类似“从最近的产品类型中选择最大值(id)”的方法来添加最后一个id。

访问数据库的方式有问题。当您尝试使用已存在的名称在数据库中插入新行时,由于列名被声明为唯一的,因此插入将失败

如果要修改现有行,必须使用
UPDATE
语句,而不是
INSERT
语句。SQL中没有任何东西可以进行插入或更新

自动增量中的任何内容都不能保证id是连续的。您所知道的是,数据库将允许为每个插入的行使用不同的id,但插入失败(在您的情况下也是如此)的结果是id序列

此外,一些驱动程序可能允许预先保留ID,特别是网络连接,以允许客户端连接获得一组ID,以防插入多行。在这种情况下,如果另一个客户机请求id,并且两个客户机交替插入行,则id将不会跟随插入时间。

阅读问题,我想这可能会有所帮助。