フラスコ - sqlalchemy.exc.NoForeignKeysError: ,service と ,repair の間に外部キー関係が見つかりません。

okwaves2024-01-25  10

クラス図をデータベース テーブルにマッピングしようとしています。サービスクラスを継承する修理クラスがあります。しかし、それを行おうとすると、「service」と「repair」の間に外部キー関係が見つかりません

と表示されます。

これが私の完全なコードです。

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from sqlalchemy import ForeignKey

import os

app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'db.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

database = SQLAlchemy(app)
ORM = Marshmallow(app)


# Models
# Service Model
class Service(database.Model):
    service_id = database.Column(database.Integer, primary_key=True)
    image_url = database.Column(database.String(255))
    jewellery_type = database.Column(database.String(50))

    def __init__(self, image_url, jewellery_type):
        self.image_url = image_url
        self.jewellery_type = jewellery_type


# Service Schema
class ServiceSchema(ORM.Schema):
    class Meta:
        fields = ('service_id', 'image_url', 'jewellery_type')


# Initialize Service Schema
service_schema = ServiceSchema()
Service_schema_all = ServiceSchema(many=True)


# repair Model
class Repair(Service):
    repair_id = database.Column(database.Integer, ForeignKey('service_id'), primary_key=True)
    damage_type = database.Column(database.String(50))
    repair_type = database.column(database.String(50))

    def _init__(self, repair_id, damage_type, repair_type):
        self.repair_id = repair_id
        self.damage_type = damage_type
        self.repair_type = repair_type


# repair Schema
class RepairSchema(ORM.Schema):
    class Meta:
        fields = ('repair_id', 'damage_type', 'repair_type')


# Initialize Repair Schema
repair_schema = RepairSchema()
repair_schema_all = RepairSchema(many=True)



# start the server
if __name__ == '__main__':
    app.run(debug=True)

非常に多くの調査を行いましたが、まだ問題を解明できません。

– シハラ・ディルシャン

2020 年 11 月 25 日 9:41



------------------------

この参照を変更してみてください

ForeignKey('service_id') 

ForeignKey('service.service_id').

2021 年 1 月 27 日 16:36 に回答

ブラヴヘク

ブラヴヘク

165

6

銅バッジ 6 個

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。