我正在使用python中的以下命令查询数据库:
self.deleted_packages = model.Session.query(
model.Package).filter_by(state=model.State.DELETED)
我正在访问pkg中的上述值,如下所示:
for pkg in self.deleted_packages:
pkg的输出为:
<Package id=563e0da3-6916-4158-bc9f-f11bf92d3240
name=asdacaasas
title=asdacaasas
version= url= author= author_email= maintainer= maintainer_email= notes=
license_id=cc-by
type=dataset
owner_org=9b89900e-c4b8-413d-a8fe-edbe08641022
creator_user_id=30ad2d1c-f133-4458-9947-535e2718a898
metadata_created=2019-05-21 13:08:52.322015
metadata_modified=2019-05-21 13:08:59.946710
private=True
state=deleted
revision_id=5251e583-3a71-4189-8d4e-aaac8ac69927>
我只需要软件包ID在一个变量中。当我尝试执行以下操作时: p1 = [x [0] for x in pkg]
我收到以下错误:
p1=[x[0] for x in pkg]
TypeError: 'Package' object is not iterable
有人知道我该如何将id:563e0da3-6916-4158-bc9f-f11bf92d3240
的值存储在上述查询结果的变量中??
答案 0 :(得分:1)
您应该阅读SQLalchemy的文档(我从注释中获取了此上下文)。
有一些示例示例可以突出显示您如何解决问题。
此答案中链接的文档中的一个示例(与您的实际情况无关!):
>>> for row in session.query(User, User.name).all():
... print(row.User, row.name)
输出为:
<User(name='ed', fullname='Ed Jones', nickname='eddie')> ed
<User(name='wendy', fullname='Wendy Williams', nickname='windy')> wendy
<User(name='mary', fullname='Mary Contrary', nickname='mary')> mary
<User(name='fred', fullname='Fred Flintstone', nickname='freddy')> fred
因此,在您的情况下,pkg
变量(Package
类的对象)可能与上面示例中的User
对象相似, name
访问row.name
的内容。
所以您的案件可能有类似pkg.id