Новичок в SQLAlchemy (поэтому моя терминология может быть немного неправильной). Я хочу создать объект базы данных внутри конструктора другого, но проблема в том, что я не могу добавить указанный объект в сеанс, поэтому я получаю ошибку.
Моя схема выглядит примерно так:
class Tag(Base):
__tablename__ = 'tag'
id = Column(Integer, Sequence('tag_id_seq'), primary_key=True, nullable=False)
type = Column(String(1), nullable=False)
name = Column(String(255), unique=True, nullable=False)
def __init__(self, type, name):
self.type=type
self.name=name
def __repr__(self):
return "<Tag('%s')>" % (self.id)
class Venue:
__tablename__ = 'venue'
tag_id = Column(Integer)
tag_type = Column(String(1), nullable=False)
location = Column(String(255), nullable=False)
tag = ForeignKeyConstraint(
(tag_id, tag_type),
(Tag.id, Tag.type),
onupdate='RESTRICT',
ondelete='RESTRICT',
)
def __init__(self,name,location):
self.tag = Tag('V',name)
self.location = location
Когда я делаю следующее:
session.add(Venue("Santa's Cafe","South Pole"))
Я получаю ошибку:
UnmappedInstanceError: Class '__builtin__.instance' is not mapped
Я предполагаю, что это потому, что объект Tag, созданный в конструкторе Venue, не добавляется в сеанс. Мой вопрос, как / когда я делаю это. (Я бы действительно предпочел создать этот объект Tag в конструкторе, если это возможно). Я думаю, что мог бы сделать это с помощью scoped_session, но это кажется очень плохим решением.
Спасибо