小编mdm*_*jsh的帖子

插入多对多记录时,sqlalchemy UnmappedColumnError

我在 Flask-sqlalchemy 模型中定义了以下多对多关系:

\n\n
class Course: \n    ...\n    modules = db.relationship('Module', secondary=course_modules,\n        primaryjoin=(course_modules.c.course_id == id),  \n        secondaryjoin=(course_modules.c.module_id == id),\n        backref=db.backref('courses', lazy='dynamic'), lazy='dynamic') \n
Run Code Online (Sandbox Code Playgroud)\n\n

module_course 表对象定义为:

\n\n
course_modules=db.Table('course_modules',\n    db.Column('course_id', db.Integer, db.ForeignKey('course.id')),\n    db.Column('module_id', db.Integer, db.ForeignKey('module.id'))\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

当执行以下操作在此表中创建记录时,我收到 sqlalchemy.orm.exc.UnmappedColumnError:

\n\n
module = module_service.get_by_id(1) #\xc2\xa0returns a Module instance\ncourse.modules = [module] #\xc2\xa0course being a Course instance\ncourse.modules.all()\n\nsqlalchemy.orm.exc.UnmappedColumnError: Can't execute sync rule for  \nsource column 'course.id'; mapper 'Mapper|Module|module' does not map \nthis column.  Try using an explicit `foreign_keys` collection which \ndoes not include destination column 'course_modules.module_id' …
Run Code Online (Sandbox Code Playgroud)

python many-to-many sqlalchemy flask-sqlalchemy

4
推荐指数
1
解决办法
2349
查看次数