我在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已经在数据库中。
有人可以帮助我吗?
答案 0 :(得分:2)
您的代码看起来很好,如果异常仅在您将源拆分为不同文件时引发。必须有类似名称冲突的内容,Sequence
类可能不是您所期望的,您可以通过在init进程之前添加这些行来检查它。
print Sequence.__module__
print type(Sequence)