Updateтрехходовой распределительную таблицу в SQLAlchemy
Проблема заключается в том, что, когда объект persited в базу данных для каждого изменить новый ВСТАВИТЬ expession генерируется. Мне нужен только один INSERT, который включает все столбцы.
#First **INSERT** request
plane.hangar.appen(hangar)
#Second **INSERT** request
users.planes.append(plane)
I имеет следующую структуру базы данных, описанную с SQLAlchemy. Что я хочу сделать, так это вставить новую запись в таблицу «users_planes_hangars
». Я пытаюсь сделать это следующим образом:
plane= dbSession.query(Plane).filter(Plane.plane_id == planeId).first()
garage = dbSession.query(Hangar).filter(Hangar.hangar_id == hangarId).first()
plane.hangar.appen(hangar)
users.planes.append(plane)
dbSession.commit()
Проблема заключается в том, что выполняется запрос (ниже запрос) не включает в себя user_id
, она включает в себя только plane_id
и hangar_id
.
INSERT INTO users_planes_hangars (plane_id, hangar_id) VALUES (%(plane_id)s, %(hangar_id)s)
RETURNING users_planes_hangars.user_id' {'hangar_id': 4, 'plane_id': 16}
|usersTabe| <--- |users_planes_hangars_table| ---> |planesTable|
|
\|/
|hangarsTable|
class User(object):
pass
class Plane(object):
pass
class Hangar(object):
pass
usersMeta = Table("user",
Column("user_id", Integer, primary_key = True)
)
mapper(User, usersMeta, properties = {
"planes": relationship(Plane, usersPlanesHangars)
})
planesMeta = Table("planes",
Column("plane_id", Integer, primary_key = True)
)
mapper(Plane, planesMeta, properties = {
"hangar": relationship(Hangar, usersPlanesHangars)
})
hangarMeta = Table("hangars",
Column("hangar_id", Integer, primary_key = True)
)
usersPlanesHangars = Table("users_planes_hangars",
Column("user_id", Integer, ForeinKey("users.user_id"), primary_key = True)
Column("plane_id", Integer, ForeinKey("planes.plane_id"), primary_key = True)
Column("hangar_id", Integer, ForeinKey("hangar.hangar_id"), primary_key = True)
)
Как «Автомобиль» и «Гараж» вступают в картину? – RedBaron
Извините, моя ошибка / – bozhidarc