Доступ ко всем значениям столбцов объединенных таблиц с помощью SqlAlchemy - PullRequest
0 голосов
/ 18 июня 2020

Представьте себе, что у одного есть две SQL таблицы

objects_stock
id | number

и

objects_prop
id | obj_id | color | weight

, которые должны быть объединены на objects_stock.id=objects_prop.obj_id, следовательно, простой SQL -запрос читает

select * from objects_prop join objects_stock on objects_stock.id = objects_prop.obj_id;

Как можно выполнить этот запрос с помощью SqlAlchemy, чтобы все возвращаемые столбцы этого соединения были доступны? Когда я выполняю

query = session.query(ObjectsStock).join(ObjectsProp, ObjectsStock.id == ObjectsProp.obj_id)
results = query.all()

с ObjectsStock и ObjectsProp соответствующими сопоставленными классами, список results содержит объекты типа ObjectsStock - почему это так? Каким будет правильный SqlAlchemy-запрос для получения доступа ко всем полям, соответствующим столбцам обеих таблиц?

1 Ответ

0 голосов
/ 19 июня 2020

На всякий случай, если кто-то столкнется с подобной проблемой: лучший способ, который я нашел до сих пор, - это явно указать столбцы для выборки,

query = session.query(ObjectsStock.id, ObjectsStock.number, ObjectsProp.color, ObjectsProp.weight).\
   select_from(ObjectsStock).join(ObjectsProp, ObjectsStock.id == ObjectsProp.obj_id)
results = query.all()

Затем можно перебирать результаты и получать доступ к свойствам по их исходные имена столбцов, например

for r in results:
    print(r.id, r.color, r.number)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...