Я пытаюсь добавить некоторые данные в базу данных с помощью python. Но я не могу получить auto increment 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
в базу данныхvehicle_price
vehicles
из таблицы 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 является идентификатором, вы можете использовать cursor.lastrowid
чтобы получить идентификатор последней строки, вставленный в объект курсора, или connection.insert_id()
чтобы получить идентификатор из последней вставки в этом соединении.
SHOW CREATE TABLE vehicles
в клиенте mysql и включите результат в свой вопрос. Подтвердить, что в таблице действительно есть автоинкремент PK и какой это столбец.