У меня есть API Flask, где я возвращаю продукты с одной из конечных точек, и я использую запрос INNER JOIN
, чтобы получить категорию и информацию о пользователе. Это моя конечная точка:
# Return all products
@products_api.route('/v1/resources/products/all', methods=['GET'])
def api_all():
conn = databaseConnection()
cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
sql_all_products = cur.execute('SELECT * FROM products a INNER JOIN users b ON a.user_id = b.id INNER JOIN product_categories c ON a.product_category_id = c.category_id ORDER BY a.id, b.id;')
all_products = cur.fetchall()
return jsonify(all_products)
Ответ такой:
[
{
"available_from": "Fri, 20 Sep 2019 11:00:00 GMT",
"available_until": "Wed, 25 Sep 2019 12:00:00 GMT",
"avatar_url": null,
"category_id": 1,
"category_name": "Power Tools",
"created_date": "Mon, 16 Sep 2019 02:55:48 GMT",
"description": "The desc.",
"email": "benj@example.com",
"email_confirmation_sent_time": "Mon, 16 Sep 2019 16:10:35 GMT",
"email_confirmed": true,
"email_confirmed_time": null,
"firstname": "Ben",
"id": 32,
"is_draft": false,
"last_updated_date": "Mon, 16 Sep 2019 02:55:48 GMT",
"location": "Johannesburg",
"parent_id": null,
"product_category_id": 1,
"quantity": 2,
"quantity_available": 2,
"rental_price": "40",
"replacement_value": "600",
"surname": "Jay",
"title": "The title",
"user_id": 32,
"username": "test-user"
},
{
"available_from": "Fri, 20 Sep 2019 00:00:00 GMT",
"available_until": "Mon, 23 Sep 2019 00:00:00 GMT",
"avatar_url": null,
"category_id": 1,
"category_name": "Power Tools",
"created_date": "Mon, 16 Sep 2019 02:55:48 GMT",
"description": "The test description.",
"email": "benj@example.com",
"email_confirmation_sent_time": "Mon, 16 Sep 2019 16:10:35 GMT",
"email_confirmed": true,
"email_confirmed_time": null,
"firstname": "Ben",
"id": 32,
"is_draft": false,
"last_updated_date": "Mon, 16 Sep 2019 02:55:48 GMT",
"location": "Sandton",
"parent_id": null,
"product_category_id": 1,
"quantity": 2,
"quantity_available": 2,
"rental_price": "60",
"replacement_value": "400",
"surname": "Jay",
"title": "The test product",
"user_id": 32,
"username": "test-user"
}
]
В моем ожидаемом ответе идентификатор будет содержать значение первичного ключа таблицы products
, но вместо этого он возвращаетзначение первичного ключа таблицы user
(32). Как я могу изменить это так, чтобы значение id
в ответе было идентификатором продукта, а не значением user_id
?
РЕДАКТИРОВАТЬ - Вот столбцы:
users
id, username, firstname, surname, email, password, email_confirmation_sent_time, email_confirmed, email_confirmed_time, avatar_url, created_date, last_updated_date
products
id, product_category_id, user_id, title, location, description, rental_price, quantity, quantity_available, replacement_value, available_from, available_until, is_draft, created_date, last_updated_date
product_categories
category_id, category_name, parent_id