我在mysql中有一个简单的表,其中包含以下字段:
使用MySQLdb,一个python模块,我想在表中插入一个名称和描述,并获取id。
在伪代码中:
db = MySQLdb.connection(...)
queryString = "INSERT into tablename (name, description) VALUES" % (a_name, a_desc);"
db.execute(queryString);
newID = ???
答案 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查询的插入包装到单个存储过程中,并在代码中调用它。您可以传入存储过程所需的参数,然后选择行数。