具有单表继承的Python + SqlAlchemy'init'

时间:2013-10-07 01:58:25

标签: python inheritance sqlalchemy

遇到了Sqlalchemy的问题。

我已经定义了我的数据库,相关部分如下......

class Person(Base):
    __tablename__ = 'PERSON'
    #
    id = Column(Integer, primary_key=True)
    person_type = Column(String(32), nullable=False)
    name = Column(String(50))
    address = Column(String(120))
    phonenum = Column(String(20))
    __mapper_args__ = {'polymorphic_on':person_type}

#

class Student(Person):
    __mapper_args__ = {'polymorphic_identity': 'Student'}
    dob = Column(Date)

我也有'Person'的其他子类。我对'init'看起来的方式有疑问。我的最后一次尝试是......

代表'人'..

def __init__(self, a_name, a_address, a_phonenum, a_person_type = None):
    self.name = a_name
    self.address = a_address
    self.phonenum = a_phonenum

和'学生'..

def __init__ (self, a_name, a_address,a_phonenum, a_dob=None, a_stud_caregiver_id=None, a_person_type = 'Student'):
    self.name = a_name
    self.address = a_address
    self.phonenum = a_phonenum
    self.dob = a_dob
    self.stud_caregiver_id = a_stud_caregiver_id
    self.person_type = a_person_type
  • 但是虽然这可以创建数据库,但是当我来'初学'我的学生时,我会收到消息......

sqlalchemy.exc.InvalidRequestError:一个或多个映射器无法初始化 - 无法继续初始化其他映射器。最初的例外是:期望的类对象,得到'表('PERSON',MetaData(绑定=无)....

我尝试使用/不使用person_type参数..但实际上,我只是在黑暗中拍摄。

我显然做了一些蠢事,但是什么?谢谢!

0 个答案:

没有答案