У меня есть что-то вроде этого:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
Base = declarative_base()
engine = create_engine('sqlite:///:memory:')
Session = sessionmaker(bind=engine)
class Room(Base):
__tablename__ = 'rooms'
id = Column(Integer, primary_key=True)
floor = Column(Integer)
usage = Column(String(50))
__mapper_args__ = {'polymorphic_on': usage,
'polymorphic_identity': 'empty'}
def __repr__(self):
return f""
class Office(Room):
__tablename__ = 'offices'
id = Column(Integer, ForeignKey('rooms.id'), primary_key=True)
computers = Column(Integer)
desks = Column(Integer)
__mapper_args__ = {'polymorphic_identity': 'office'}
def __repr__(self):
return f""
class Bath(Room):
__tablename__ = 'baths'
id = Column(Integer, ForeignKey('rooms.id'), primary_key=True)
toilets = Column(Integer)
sinks = Column(Integer)
__mapper_args__ = {'polymorphic_identity': 'bath'}
def __repr__(self):
return f""
# Create tables
Base.metadata.create_all(engine)
# Create a new session
session = Session()
# Add initial Room instances
room_1 = Room(id=1, floor=1, usage='empty')
room_2 = Room(id=2, floor=1, usage='empty')
session.add_all([room_1, room_2])
session.commit()
print("Initial Rooms:", session.query(Room).all())
и я хочу преобразовать комнату в офис таким образом, чтобы, когда я запрашиваю таблицу комнат, она по-прежнему отображала комнату с атрибутом использования как офис, и когда я запрашиваю офис стол, он просто дает мне офис
Я попробовал это, и это сработало, но хочу знать, есть ли способ добиться этого, не удаляя исходную комнату
# Convert room_1 to an Office
session.delete(room_1) # Delete the initial Room instance
session.commit()
# Add Office instance with the same ID as room_1
office_1 = Office(id=1, floor=1, computers=10, desks=5)
session.add(office_1)
session.commit()
# Query and check results
print("Rooms after conversion:", session.query(Room).all())
print("Offices:", session.query(Office).all())
Подробнее здесь: https://stackoverflow.com/questions/792 ... ild-object
Полиморфизм SQLAlchemy преобразует объект из родительского объекта в дочерний объект ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Спящий режим хочет загрузить дочерний объект внутри родительского объекта
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-