gpt4 book ai didi

Flask-SqlAlchemy - 与列 ‘ ’ 关联的外键找不到表

转载 作者:行者123 更新时间:2023-12-03 16:51:52 25 4
gpt4 key购买 nike

我对 Flask-SQLAlchemy 有一个奇怪的问题。当我尝试通过 Flask 应用程序更新模型时出现以下错误,但是 通过终端执行时工作正常。我正在通过 postman 发出请求(http://localhost:5000/changecontrols/2)。记录在那里,就像我说的在终端上工作正常。

Error: 'Foreign key associated with column 'ChangeControls.client_id' could not find table 'Clients' with which to generate a foreign key to target column ‘id’

我的结构如下所示:
  • 变更经理
  • 楷模
  • 变更控制
  • 客户
  • 应用程序.py
  • Webapi.py

  • 我正在做一个 put 请求,其中 application/json 类型是:
    {
    “名称”:“数据补丁”
    }

    应用程序.py
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy

    app = Flask(__name__)

    app.config.from_pyfile('config.py')

    db = SQLAlchemy(app)

    from webapi import *

    if __name__ == '__main__':
    app.run()

    WebApi.py
    from app import db
    @app.route("/changecontrols/<string:id>", methods=["PUT"])
    def update_change_control(id):
    data = request.get_json()
    change_control = ChangeControl.query.get(id)

    if change_control is None:
    return jsonify({"result": "change control was not found"}), 404

    change_control.name = data["name"]

    ---> **db.session.commit() **<- This is where the error occurs****

    return jsonify(change_control.serialize()), 200

    变更控制
    from app import db

    class ChangeControl(db.Model):
    __tablename__ = 'ChangeControls'
    id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
    number = db.Column(db.String(20), nullable=False)
    name = db.Column(db.String(200), nullable=False)
    type = db.Column(db.String(50), nullable=True)
    client_id = db.Column(db.Integer, db.ForeignKey('Clients.id'))

    def load_from_json(self, data):

    self.name = data.get("name",self.name)
    self.number = data.get("number",self.number)
    self.type = data.get("type", self.type)

    客户
    from app import db

    class Client(db.Model):
    __tablename__ = 'Clients'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True )
    name = db.Column(db.String(100), nullable=False)
    startdate = db.Column(db.DateTime , default=datetime.datetime.utcnow())
    inactivedate = db.Column(db.Date, nullable=True)

    changecontrols = db.relationship('ChangeControl', backref='client', lazy='dynamic')

    def load_from_json(self, data):
    self.id = data["id"]
    self.name = data["name"]
    self.number = data["number"]

    相同的代码在终端中运行没有错误?!?!
    enter image description here

    谢谢你看我的帖子:)

    最佳答案

    那是因为您没有在 app.py 中导入模型。 .尝试在您的 app.py 中包含以下内容文件:

    from models.ChangeControl import ChangeControl
    from models.Client import Client
    from webapi import *

    这样您就不需要将所有模型放在一个包中。

    关于Flask-SqlAlchemy - 与列 ‘ ’ 关联的外键找不到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731147/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com