烧瓶-与两个表的关系

时间:2020-06-20 21:45:41

标签: python flask flask-sqlalchemy

我正在尝试在两个表格之间建立一对多的关系,对此我有一些疑问。

表格代码

class Movies(db.Model):
  __tablename__ = 'movies'
  id = db.Column(db.String(300), primary_key=True)
  cat_id = db.relationship('Category', backref='movie')
  title = db.Column(db.String(250), nullable=False)
  link = db.Column(db.String(250), nullable=False)
  duration = db.Column(db.String(250), nullable=False)
  thumb_large = db.Column(db.String(250), nullable=False)
  thumb = db.Column(db.String(250), nullable=False)
  embed = db.Column(db.String(250), nullable=False)
  tags = db.Column(db.String(250), nullable=False)
  published = db.Column(db.String(250), nullable=False)


class Category(db.Model):
  __tablename__ = 'category'
  id = db.Column(db.String(300), db.ForeignKey('movies.cat_id'), primary_key=True)
  category = db.Column(db.String(30), nullable=False)

我正在尝试迁移它,但是它给了我这个错误 sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'movies.cat_id' on table 'category': table 'movies' has no column named 'cat_id'

我不明白为什么我已经设定好关系。 知道我该怎么办吗?

2 个答案:

答案 0 :(得分:0)

我认为应该解决它。
在我看来,SQLAlchemy有关关系的文档非常有帮助。您可以找到此here

class Movie(Model):
  __tablename__ = 'movies'
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(255), nullable=False, unique=True, index=True)
  link = db.Column(db.String(255), nullable=False)
  duration = db.Column(db.String(255), nullable=False)
  thumb_large = db.Column(db.String(255), nullable=False)
  thumb = db.Column(db.String(255), nullable=False)
  embed = db.Column(db.String(255), nullable=False)
  tags = db.Column(db.String(255), nullable=False)
  published = db.Column(db.String(255), nullable=False)
  cat_id = db.Column(db.Integer, ForeignKey('categories.id'))
  category = db.relationship('Category', backref='movies')

class Category(Model):
  __tablename__ = 'categories'
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(31), nullable=False, unique=True, index=True)

答案 1 :(得分:0)

这是我与患者和患者详细信息之间的诊所关系,这可能会对您有所帮助,并且确实对我有用。

class Patient(db.Model, UserMixin): 
    __bind_key__ = 'patient'
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(10), nullable=False)
    number = db.Column(db.String(11), unique=False, nullable=False) 
    gender = db.Column(db.String(10), nullable=False) 
    birth = db.Column(db.String(20), nullable=False) 
    IDcard = db.Column(db.String(12), nullable=False) 
    age = db.Column(db.String(3), unique=False, nullable=False)
    create = db.Column(db.DateTime, nullable=False, default=datetime.now) 
    details = db.relationship('Detail', backref='patient', lazy=True) 

class Detail(db.Model, UserMixin): 
    __bind_key__ = 'detail'
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(20), unique=False, nullable=False)
    Symptom = db.Column(db.String(100), nullable=False)
    Initial_diagnosis = db.Column(db.String(50), nullable=False) 
    Preliminary_treatment_plan = db.Column(db.String(100), nullable=False) 
    Check_result = db.Column(db.String(50), nullable=False) 
    Patient_reason = db.Column(db.String(100), unique=False, nullable=False) 
    Doctor_name = db.Column(db.String(20), unique=False, nullable=False) 
    Date_of_diagnosis = db.Column(db.DateTime, nullable=False, default=datetime.now)  
    detail = db.Column(db.Integer, db.ForeignKey('patient.id'), nullable=False)
    date_add = db.Column(db.DateTime, nullable=False, default=datetime.now)