我正在尝试使用 python 将一些数据添加到数据库中。但是我无法获得最后插入记录的自动递增 primary_key
。
我的代码如下:
def insert_vehicles_to_db(vehicle):
conn = db_connection()
cur = conn.cursor()
if vehicle_not_exists(vehicle, conn, cur):
try:
insert_vehicle(vehicle, conn, cur)
except Exception as e:
pass
else:
pass
conn.close()
然后进入insert_vehicle
函数。在我想要的功能中:
- 向数据库添加新的
车辆
- 在
vehicle_price
表中添加新价格 - 对于上一步,我需要从
vehicles
表中最后插入的车辆主键
函数insert_vehicle
如下:
def insert_vehicle(vehicle, conn, cur):
try:
query = "INSERT INTO vehicles (reference, data, price, reference_url, timestamp) VALUES (%s, %s, %s, %s, %s);"
cur.execute(query, (vehicle['reference'], "", vehicle['price'], vehicle['reference_url'], datetime.datetime.now()))
////////// I tried here vehicle_id = cur.lastrowid, it gives me always 0 //////////
insert_vehicle_price(vehicle['price'], vehicle_id, conn, cur)
conn.commit()
except Exception as e:
# TODO Handle error
pass
insert_vehicle_price
如下所示:
def insert_vehicle_price(price, vehicle_id, conn, cur):
//// Here I need the correct vehicle_id to be able to insert a new record in `vehicle_price` table
pass
知道怎么解决吗?
最佳答案
如果您的 primary_key 是 ID,那么您可以使用 cursor.lastrowid
获取插入游标对象的最后一行 ID,或使用 connection.insert_id()
来从该连接上的最后一次插入中获取 ID。
关于python - 如何使用 Python 获取数据库中最后插入记录的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51152490/