{class} .query.all()请求不要从表中检索所有数据



我正在研究Python 3.6中的一个小烧瓶项目。

我正在尝试与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.query.all()

我以为我只会作为一个响应列表,其中包括我的3个帖子的所有数据,但我会得到以下内容,我不明白为什么:

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

有人可以解释这一点并帮助我使用所有数据列表吗?:)

我不知道烧瓶 - 塞拉尔奇米,但是作为sqlalchemy用户,我认为列表中的每个项目都是 Task实例中的每个项目。>

尝试查看可用属性:

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

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

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

因此,如果您想要标题列表

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

我也有类似的问题,事实证明我需要在模型中指定primary_key=True。之后,加载了所有数据。

最新更新