【问题标题】:KeyError: None returns when assigning variables to a Postgres columnKeyError:将变量分配给 Postgres 列时没有返回
【发布时间】:2019-09-27 18:11:53
【问题描述】:

我正在尝试将一些 JSON 对象分配到我的 PostgreSQL 数据库中,该数据库称为“miniproject”,而我尝试插入的表称为“mini_project”,但它始终返回“KeyError:None”异常为如下:

很高兴知道:

  • JSON 对象已成功传递到 index.html 页面。

  • 我已经在 miniproject 数据库中初始化了表列。


应用程序.py

from flask import Flask, render_template, request
from flask_api import FlaskAPI
from models import *

app = Flask(__name__)
app = FlaskAPI(__name__)

app.config["SQLALCHEMY_DATABASE_URI"] = ("postgresql://postgres:password@localhost/miniproject")

app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False


db.init_app(app)

@app.route("/apod", methods=["POST"])
def pic():
    # Get form information.
    date = request.form.get("date")

    res = requests.get("https://api.nasa.gov/planetary/apod?api_key=some_key",
                       params={"date": date})
    if res.status_code != 200:
        raise Exception(f"{res.status_code} - ERROR: API request unsuccessful.")
    else:
        data = res.json()
        explanation = data ["explanation"]
        url = data ["url"]
        copyrights = data ["copyright"]
        title = data ["title"]



        miniproject.add_to(date, url, explanation, copyrights, title)

        return render_template("index.html", url= url, explanation= explanation, copyrights= copyrights, title=title)

models.py

import os

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()


class miniproject(db.Model):
    __tablename__ = "mini_project"
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.DATE, nullable=False)
    url = db.Column(db.String, nullable=False)
    explanation = db.Column(db.String, nullable=True)
    copyrights = db.Column(db.String, nullable=False)
    title = db.Column(db.String, nullable=False)

    def add_to(self, date, url, explanation, copyrights, title):
        m = miniproject(date= date, url=url, explanation=explanation, 
                        copyrights= copyrights, title=title)
        db.session.add(m)
        db.session.commit()

错误状态:

密钥错误

密钥错误:无

Traceback(最近一次通话最后一次)

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request

rv = self.dispatch_request()

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 1935, in dispatch_request

return self.view_functions[rule.endpoint](**req.view_args)

File "D:\Courses\Very Important\CS50 Web programming with Python and JavaScript\miniProject\miniProject.py", line 39, in pic

miniproject.add_to(date)

During handling of the above exception, another exception occurred:
File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 2463, in __call__

return self.wsgi_app(environ, start_response)

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 2449, in wsgi_app

response = self.handle_exception(e)

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 1866, in handle_exception

reraise(exc_type, exc_value, tb)

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\_compat.py", line 39, in reraise

raise value

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 2446, in wsgi_app

response = self.full_dispatch_request()

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request

rv = self.handle_user_exception(e)

File "c:\users\msi pc\appdata\local\programs\python\python37-32\lib\site-packages\flask_api\app.py", line 96, in handle_user_exception

app_handlers = self.error_handler_spec[None].get(None, ())

KeyError: None

【问题讨论】:

    标签: python-3.x postgresql flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    实际上是因为我的代码中有两个app = Flask(__name__)。删除其中一个将使一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2020-01-07
      • 1970-01-01
      • 2021-02-27
      相关资源
      最近更新 更多