{Class} .query.all()请求的Flask-SQLAlchemy问题无法从表中检索所有数据

时间:2019-03-04 21:53:31

标签: python sqlalchemy flask-sqlalchemy

我正在用Python 3.6开发一个Flask小项目。

我正在尝试与SQLAlchemy一起管理小型SQLite3数据库,但遇到一些问题。

这是我使用的模型(数据库变量称为“ db”):

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=True)
    date_created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    deadline = db.Column(db.DateTime, nullable=True)
    date_closed = db.Column(db.DateTime, nullable=True)
    owner = db.Column(db.String(25), nullable=False)
    state = db.Column(db.Integer, nullable=False, default='0')
    priority = db.Column(db.Integer, nullable=False, default='0')
    project = db.Column(db.String(100), nullable=False)

然后我尝试插入以下内容:

post_1 = Task(title='Task 1', owner='Guillaume', project='First Project')
post_2 = Task(title='Task 2', owner='Guillaume', project='First Project')
post_3 = Task(title='Task 3', owner='Jiji', project='Second Project')

检查任务表后,我的数据插入正确。

问题是,当我尝试查询数据库以检索其所有数据时,我在导入Task类之后使用以下命令:

Task.query.all()

我以为我会得到一个包含我3个帖子的所有数据的列表,但我收到以下内容,但我不明白为什么:

[<Task 1>, <Task 2>, <Task 3>]

有人可以解释一下,并帮助我获取所有数据的列表吗? :)

2 个答案:

答案 0 :(得分:0)

我不特别了解Flask-SQLAlchemy,但是作为sqlalchemy用户,我认为您列表中的每个项目都有可能是一个Task实例,它通过属性公开了实际数据。

尝试此操作以查看可用属性:

>>> dir(Task.query.all()[0])

类似这样的东西应该向您显示您的数据:

for task in Task.query.all():
    print(task.id, task.title, task.content, task.date_created)  # etc...

答案 1 :(得分:0)

So if you wanted list of title for example you could use list comprehension

titles = [T.title for T in Task.query.all()]