This is my Model:
class Todo(db.Model):
__tablename__ = "todos"
id = db.Column(db.Integer, primary_key=True)
description = db.Column(db.String(), nullable=False)
class TodoSchema(ma.SQLAlchemySchema):
class Meta:
model = Todo
This is my route
@app.route("/data", methods=["GET"])
def data():
data = Todo.query.all()
print(len(data)) #28
print(data) #[<Todo 1>, <Todo 2>, <Todo 3>, <Todo 4>, <Todo 5>, <Todo 6>, <Todo 7>, <Todo 8>, <Todo 9>, <Todo 10>, <Todo 11>, <Todo 12>, <Todo 13>, <Todo 14>, <Todo 15>, <Todo 16>, <Todo 17>, <Todo 18>, <Todo 19>, <Todo 20>, <Todo 21>, <Todo 22>, <Todo 23>, <Todo 24>, <Todo 25>, <Todo 26>, <Todo 27>, <Todo 28>]
todo_schema = TodoSchema()
output = todo_schema.dump(data)
print(output) # {}
return output
When I do a loop it looks like this:
for item in data:
print(item.description)
walk the dog
buy groceries
....
You can see the output of the print
statements behind it in the comments.
So what I want is the make a JSON Object from the data object which I can return. What is the reason output results in an empty dictionary? Is there a simple solution like
data = Todo.query.all()
return jsonify({data})