【发布时间】:2021-09-15 06:03:47
【问题描述】:
我正在尝试添加 Art 对象并收到此错误:
sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'mapped class Source->sources'. Original exception was: Could not determine join condition between parent/child tables on relationship Source.arts - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression.
这是我的代码:
art_tags = db.Table('art_tags',
db.Column('art_id', db.Integer, db.ForeignKey('arts.id')),
db.Column('tag_id', db.Integer, db.ForeignKey('tags.id'))
)
art_categories = db.Table('art_categories',
db.Column('art_id', db.Integer, db.ForeignKey('arts.id')),
db.Column('category_id', db.Integer, db.ForeignKey('categories.id'))
)
class Tag(db.Model):
__tablename__ = 'tags'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(255), nullable=False)
arts = db.relationship('Art', secondary=art_tags, backref='tags', lazy=True)
def __repr__(self):
return '<Tag id={} name="{}">'.format(self.id, self.name)
class Source(db.Model):
__tablename__ = 'sources'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(255), nullable=False)
arts = db.relationship('Art', backref='source', lazy=True)
def __repr__(self):
return '<Source id={} name="{}"'.format(self.id, self.name)
class Category(db.Model):
__tablename__ = 'categories'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(255), nullable=False)
arts = db.relationship('Art', secondary=art_categories, backref='categories', lazy=True)
def __repr__(self):
return '<Category id={} name="{}">'.format(self.id, self.name)
class Art(db.Model):
__tablename__ = 'arts'
id = db.Column(db.Integer(), primary_key=True)
original = db.Column(db.Text, nullable=False, unique=True)
preview = db.Column(db.Text, nullable=False, unique=True)
def __repr__(self):
return '<Art id={}>'.format(self.id)
【问题讨论】:
标签: python sqlite flask sqlalchemy