row = result.fetchone () AttributeError: объект 'NoneType' не имеет атрибута 'fetchone' - PullRequest
0 голосов
/ 05 июня 2018

У меня есть скрипт на python, который должен 'получать' информацию из базы данных postgres

create_table.py

from flask import request
from flask_restful import Resource

import psycopg2

class single_user_Request(Resource):
   def get(self, username):
      connection = psycopg2.connect("dbname = 'tracker' "
                                  "user = 'postgres' "
                                  "password='rasengan1408' "
                                  "host = 'localhost' "
                                  "port='5432'")
      cursor = connection.cursor()

      query = "SELECT * FROM users WHERE username=%s"
      result = cursor.execute(query, (username,))
      row = result.fetchone()
      connection.close()
      if row:
          return {'req_id':row[0], 'username':row[1], 'equipment_name': row[2], 'requesttype':row[3], 'description': row[4], 'status':row[5]}
      return {'message':'request not found'}, 404

init .py

from flask import Flask
from flask_restful import Api
from app.api.v1.requests import single_user_Request


def create_app():
    app = Flask(__name__)
    app.secret_key = 'GciOiJIUzI1NiJ9.eyJleHAiOj'
    api = Api(app)


    api.add_resource(single_user_Request, '/api/v1/userrequests/<string:username>')

return app

run.py

from app.api import create_app

app = create_app()

app.run(debug=True)

После запуска сценария

AttributeError: 'NoneType' object has no attribute 'fetchone'

Я пытаюсь понять, почему fetchone будет не типом объекта, если в базе данных есть данные

1 Ответ

0 голосов
/ 05 июня 2018

cursor.execute ничего не возвращает, вам нужно изменить свой код следующим образом

query = "SELECT * FROM users WHERE username=%s"
cursor.execute(query, (username,))
row = cursor.fetchone()
...