我正在研究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
。之后,加载了所有数据。