python-3.x - 运行迁移时出现 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'
我在这里做错了什么
解决方案
在您的 Destinations 模型中,您需要将 id 列更改为主键
id = db.Column(db.Integer, primary_key=True)
并为关系添加一个外键列,再次在 Destinations 中:
tourpackages_id = db.Column(db.Integer, db.ForeignKey('tour_package.id'))
请参阅文档。
推荐阅读
- excel - 社交媒体和电子邮件提取代码需要更新
- sql - 为 Oracle 函数定义一个 CLOB 输入参数(或使用 CLOB 输入参数定义一个函数)
- python - 如何使用 matplolib 设置时间序列多图配置
- android - Android:一个清单中有多个启动器
- php - Mac OS Catalina 上的 my.cnf 或 mysql.conf 在哪里?
- javascript - 在数组中添加新数据
- php - 如何解决GD库中的白屏问题?
- java - 将 String 设置为 TextView 并等待一段时间,然后将另一个 String 设置为相同的 TextView
- javascript - 如何在插入时在 mongodb 中创建所需的字段?
- opengl - 关于广告牌矩阵转换的问题