Я разрабатываю систему с использованием SQLALchemy для сохранения моих данных. Я хотел бы иметь объекты из моих строк по умолчанию, чтобы потом использовать их при создании новых экземпляров.
Это было бы очень хорошо для меня, так как некоторые таблицы должны иметь некоторые значения по умолчанию. Представьте себе простую связь между таблицами trow (order и order_status). При вставке значений по порядку было бы неплохо иметь простой способ использовать некоторые из этих значений по умолчанию уже в order_status без необходимости каждый раз запрашивать их.
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, sessionmaker
engine = create_engine('sqlite:///:memory:')
Base = declarative_base()
class Order(Base):
__tablename__ = 'order'
id = Column(Integer, primary_key=True)
order_status_id = Column(Integer, ForeignKey('order_status.id'))
value = Column(Integer)
order_status = relationship('OrderStatus', lazy=True, uselist=False)
class OrderStatus(Base):
__tablename__ = 'order_status'
id = Column(Integer, primary_key=True)
name = Column(String(32))
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
finished = OrderStatus(name='Finished')
session.add(finished)
session.commit()
Например, я бы хотел создать новый экземпляр Order, используя что-то вроде:
order = Order(value=10, order_status=OrderStatus.FINISHED)
Вместо:
finished_status = session.query(OrderStatus).filter_by(name='Finished').first()
order = Order(value=10, order_status=finished_status)
Его не нужно реализовывать точно так же, как в моем примере, но я бы хотел что-то аналогичный