[解決した]exc.NoReferencedTableError: Foreign key associated with column (painting,).ori...


[解決した]exc.NoReferencedTableError: Foreign key associated with column ‘(‘painting’,).origin_id’ could not find table ‘origin’ with which to generate a foreign key to target column ‘id’
データベースを作成するときは、一対一、一対多、多対多時報エラーを構築します.次に、一対多例を挙げます.
原因1
テーブル名を設定する文の後ろに「,」を付けました.
#    
class Origin(db.Model):
    __tablename__ = 'origin',   #*        *
    id = db.Column(db.Integer, primary_key=True)  #   
    url = db.Column(db.String(64), nullable=False)  # nullable     
    paintings = db.relationship("Painting", backref="origin")  #       【  :painting.origin.url


#     
class Painting(db.Model):
    __tablename__ = 'painting',
    id = db.Column(db.Integer, primary_key=True)  #   
    url = db.Column(db.String(64), nullable=False)  # nullable     
    origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"))  #       【           


解决方法:“,”を削除すればよい
原因2
テーブル名が呼び出し時のテーブル名と一致しません
#    
class Origin(db.Model):
    __tablename__ = 'originaaa'   #*     *
    id = db.Column(db.Integer, primary_key=True)  #   
    url = db.Column(db.String(64), nullable=False)  # nullable     
    paintings = db.relationship("Painting", backref="origin")  #       【  :painting.origin.url


#     
class Painting(db.Model):
    __tablename__ = 'painting',
    id = db.Column(db.Integer, primary_key=True)  #   
    url = db.Column(db.String(64), nullable=False)  # nullable     
    origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"))  #       【           
    #*                  *


解決策:
  • 設定されたテーブル名を削除し、デフォルトのテーブル名を呼び出すと
  • になります.
  • が呼び出すとき、呼び出し設定のテーブル名
  • デフォルトのテーブル名
    デフォルトの表名は小文字で、アルパカ法で命名された表名には下線分割があります.
    class User(db.Model)  ,     user
    class StudentUser(db.Moedl)  ,     student_user