使用Flask和Flask-SQLAlchemy开展一个小方案项目,但我似乎遇到了一些麻烦。我正在尝试在MySQL上创建两个具有多对多关系的对象。但我一直有一个非常奇怪的错误:
ArgumentError: relationship 'tags' expects a class or a mapper argument (received: <class 'sqlalchemy.sql.schema.Table'>)
即使代码看起来与Flask-SQLAlchemy "tutorial"中的代码几乎相同。
tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
db.Column('nation_id', db.Integer, db.ForeignKey('nation_event.id'))
)
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
class NationEvent(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.relationship('Tag', secondary=tags,
backref=db.backref('nationevents', lazy='dynamic'))
我已经尝试阅读SQLAlchemy文档以及Flask-SQLAlchemy文档,但我真的找不到任何方法来解决这个问题。我很感激任何人都可以提供帮助。
更新:删除整个数据库并使用其他名称重新设置它会因某种原因解决问题。我无法找到一个理由,为什么在重新命名具有相同名称的数据库时它不起作用,但是......