首页 > 解决方案 > 运行迁移时出现 sqlalchemy.exc.ArgumentError

问题描述

我在尝试运行迁移时遇到参数错误,但我无法弄清楚问题出在哪里,我试图实现的是两个模型之间的关系。下面是我的模型类:

class TourPackages(db.Model):
    __tablename__ = 'tour_package'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    description = db.Column(db.TEXT)
    price = db.Column(db.Float)
    destination = db.relationship('Destinations', backref='tourpackages', lazy=True)
    capacity = db.Column(db.Integer)

    @property
    def serialize(self):
        return {
            'name': self.name,
            'description': self.destination,
            'price': self.price,
            'destination': self.destination,
            'capacity': self.capacity
        }


class Destinations(db.Model):
    __tablename__ = 'destination'

    id = db.Column(db.Integer)
    location = db.Column(db.String(50))
    danger_type = db.Column(db.String(50))

当我使用以下命令运行迁移时:

flask db migrate -m "Initial migration."

我收到此错误:

sqlalchemy.exc.ArgumentError: Mapper mapped class Destinations->destination could not assemble any primary key columns for mapped table 'destination'

我在这里做错了什么

标签: python-3.xflaskflask-sqlalchemy

解决方案


在您的 Destinations 模型中,您需要将 id 列更改为主键

id = db.Column(db.Integer, primary_key=True)

并为关系添加一个外键列,再次在 Destinations 中:

tourpackages_id = db.Column(db.Integer, db.ForeignKey('tour_package.id'))

请参阅文档


推荐阅读