Я хочу добавить некоторые данные в базу данных, используя python, но у меня есть проблема. Данные в одну таблицу успешно вставлены, но проблема в другой таблице.
Существует две таблицы vehicles
и vehicle_price
:
Мой код выглядит следующим образом:
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)
insert_vehicle_price(vehicle, conn, cur)
except Exception as e:
pass
conn.close()
Функция 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()))
conn.commit()
except Exception as e:
pass
Это прекрасно работает, автомобили всегда вставлены. Но проблема в следующем, в insert_vehicle_price
, который выглядит следующим образом:
def insert_vehicle_price(vehicle, conn, cur):
try:
vehicle_data = get_vehicles(vehicle['reference'], vehicle['reference_url'], conn, cur)[0] # get the last vehicle
vehicle_id = vehicle_data[0]
vehicle_price = Decimal(vehicle['price'] + ".00")
query = "INSERT INTO vehicle_price (price, timestamp, vehicle_id) VALUES (%s, %s, %s);"
cur.execute(query, (vehicle_price, datetime.datetime.now(), vehicle_id))
conn.commit()
except Exception as e:
pass
Таким образом, по какой-то причине цены не включены.
Есть идеи почему?
UPDATE
Функция get_vehicles
выглядит следующим образом:
def get_vehicles(reference, reference_url, conn, cur):
try:
sql_get_vehicles = "SELECT * FROM vehicles WHERE reference = %s and reference_url = %s"
cur.execute(sql_get_vehicles, (reference, reference_url))
return cur.fetchall()
except Exception as e:
# TODO Handle error
pdb.set_trace()
pass