Flask AttributeError: объект 'NoneType' не имеет атрибута 'name' - PullRequest
0 голосов
/ 11 июля 2020

Работа над простым веб-приложением, которое должно возвращать «Привет, (имя извлечено из базы данных)». Он говорит, что the object has no attribute for 'name' даже если имя указано как атрибут в классе. Не могу понять, почему он думает, что его там нет (если я не понимаю ошибку)?

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app=Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres@localhost:5432/example'
db = SQLAlchemy(app)

# initalizes the class/table
class Person(db.Model):
    __tablename__ = 'persons'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(), nullable=False)

db.create_all()

@app.route('/')
def index():
    person = Person.query.first()
    return 'Hello ' + person.name

Ошибка:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/ZEMEL/Dropbox (Personal)/Code/hello/flask-hello-app.py", line 20, in index
    return 'Hello ' + person.name
AttributeError: 'NoneType' object has no attribute 'name'

1 Ответ

0 голосов
/ 11 июля 2020

ваша база данных либо не имеет содержимого, либо вы получаете данные неправильно.

person=Person.query(name="name").first() 

должен получать данные с первым человеком с именем «name»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...