TypeError:__ init __()得到意外的关键字参数错误

时间:2015-07-17 22:15:46

标签: python sqlite sqlalchemy

我在sqlite数据库中有6个表,我试图使用sqlalchemy在其中一个表中添加一个新行。这是我的表:

class DSource(Base):
    __tablename__ = 'dsource'

    source_id = Column(Integer, primary_key=True)
    subjects= relationship("Subject") 

class Subject(Base):
    __tablename__ = 'subject'

    subject_id = Column(Integer, primary_key=True)
    source_id=Column(Integer, ForeignKey("dsource.source_id"),nullable=False)
    sequences= relationship("Sequence")

class Sequence(Base):
     __tablename__ = 'sequence'

     sequence_id = Column(Integer, primary_key=True)
     subject_id=Column(Integer, ForeignKey("subject.subject_id"),nullable=False)

以下是我用来向表中添加新序列的代码:

engine = create_engine('sqlite:////Desktop/emotion_data/test.db',echo=True)
Session = sessionmaker(bind=engine)
session = Session()

new_sequence=Sequence(sequence_id=0,subject_id=1)
session.add(new_sequence)
session.commit()

但是我收到了这个错误:

TypeError: __init__() got an unexpected keyword argument 'subject_id'

我不知道这是什么意思,我已经导入了一个"主题" " subject_id = 0"到表,所以subject_id = 0已经在数据库中。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您的代码看起来很好,如果异常仅在您将源拆分为不同文件时引发。必须有类似名称冲突的内容,Sequence类可能不是您所期望的,您可以通过在init进程之前添加这些行来检查它。

print Sequence.__module__
print type(Sequence)