新手问题。 Pylons 1 + SQLA使用声明式样式。 Python新手。
我有一个名为Entity的“master”类,“child”类必须属于它们才有效。我对主类的链接是在子对象级别上。我的问题是我似乎无法弄清楚如何创建子对象并创建主对象以及创建对象之间的链接。我利用关系进行链接。
因此,我想在一个链接上创建一个ono,如下所示: 实体1 - 客户1 实体2 - 客户2 实体3 - 制片人1 实体4 - 制片人2 等
代码可能会更好地解释。
class Entity(Base):
__tablename__ = "entities"
# Primary Key
entity_id = Column(Integer, primary_key=True)
# Data Fields
name = Column(Unicode(255), nullable=False)
def __init__(self, name, description):
self.name = name
def __unicode__(self):
return self.name
__str__ = __unicode__
class Client(Base):
__tablename__ = "clients"
client_id = Column(Integer, primary_key=True)
# Data fields
name = Column(UnicodeText(255), nullable=False, unique=True)
# Entity Link
entity_id = Column(Integer, ForeignKey('entities.entity_id'))
# Mapper
entity = relation('Entity')
def __init__(self, name):
self.name = name
def __unicode__(self):
return self.name
__str__ = __unicode__
在控制器中,我尝试创建一个新客户端并将其附加一个实体,该实体失败了。请在下面编写代码。
client_entity = model.Entity(name=client_name, description=client_name + " added")
client = model.Client(name=client_name)
client.entity.append(client_entity)
Session.add(client)
Session.commit()
现在根据我这应该是可能的,我希望有人可以帮助,因为我在我的智慧结束。
答案 0 :(得分:0)
这有意义吗?
class Entity(Base):
__tablename__ = "entities"
# Primary Key
entity_id = Column(Integer, primary_key=True)
# Data Fields
name = Column(Unicode(255), nullable=False)
def __init__(self, name, description):
self.name = name
def __unicode__(self):
return self.name
__str__ = __unicode__
class Client(Base):
__tablename__ = "clients"
client_id = Column(Integer, primary_key=True)
name = Column(UnicodeText())
entity_id = Column(Integer, ForeignKey('entities.entity_id'))
# Mapper
entity = relation('Entity', uselist=False, backref='clients')
def __init__(self, name):
self.name = name
def __unicode__(self):
return self.name
__str__ = __unicode__
client_name="ClientName"
entitiy_name="EntityName"
client = Client(name=client_name)
client.entity=Entity(name=entitiy_name, description=entitiy_name + " added")
如果您使用OneToOne,我认为"uselist=False"非常有用。