Данные не вставляются в базу данных - python - PullRequest
0 голосов
/ 03 июля 2018

Я хочу добавить некоторые данные в базу данных, используя python, но у меня есть проблема. Данные в одну таблицу успешно вставлены, но проблема в другой таблице.

Существует две таблицы vehicles и vehicle_price:

enter image description here enter image description here

Мой код выглядит следующим образом:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...