我正在用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>]
有人可以解释一下,并帮助我获取所有数据的列表吗? :)
答案 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()]