在python中使用MySQLdb插入mysql之后,如何安全有效地获取行id?

时间:2009-04-01 18:14:28

标签: python mysql

我在mysql中有一个简单的表,其中包含以下字段:

  • id - 主键,int,autoincrement
  • name - varchar(50)
  • description - varchar(256)

使用MySQLdb,一个python模块,我想在表中插入一个名称和描述,并获取id。

在伪代码中:

db = MySQLdb.connection(...)
queryString = "INSERT into tablename (name, description) VALUES" % (a_name, a_desc);"

db.execute(queryString);
newID = ???

4 个答案:

答案 0 :(得分:28)

我认为可能是

newID = db.insert_id()

按原创海报编辑

原来,在我使用的MySQLdb版本中(1.2.2) 您将执行以下操作:

conn = MySQLdb(host...)

c = conn.cursor()
c.execute("INSERT INTO...")
newID = c.lastrowid

我将此作为正确的答案,因为它让我指出了正确的方向。

答案 1 :(得分:2)

我不知道是否有针对此的MySQLdb特定API,但通常您可以通过SELECTing LAST_INSERT_ID()获取最后插入的ID

它基于每个连接,因此如果其他客户端也执行插入操作,则不会冒竞争条件。

答案 2 :(得分:0)

你也可以做一个

conn.insert_id

答案 3 :(得分:-7)

最简单的方法是将带有select count查询的插入包装到单个存储过程中,并在代码中调用它。您可以传入存储过程所需的参数,然后选择行数。