【问题标题】:sqlalchemy.exc.ArgumentError while running migrations运行迁移时出现 sqlalchemy.exc.ArgumentError
【发布时间】:2020-07-06 20:55:47
【问题描述】:

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

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.x flask flask-sqlalchemy


    【解决方案1】:

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

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

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

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

    请参阅documentation

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2016-08-17
      相关资源
      最近更新 更多