Доступ к данным из объекта запроса SQLalchemy? - PullRequest
0 голосов
/ 21 мая 2019

Я запрашиваю свою базу данных, используя следующую команду в python:

self.deleted_packages = model.Session.query(
            model.Package).filter_by(state=model.State.DELETED)

И я получаю доступ к вышеуказанному значению в pkg, как показано ниже:

for pkg in self.deleted_packages: 

Вывод в pkgis:

<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>

Мне просто нужен идентификатор пакета в переменной.И когда я пытаюсь сделать следующее: p1 = [x [0] для x в pkg]

я получаю следующую ошибку:

p1=[x[0] for x in pkg]
TypeError: 'Package' object is not iterable

Кто-нибудь знает, как я могу сохранитьзначение только id: 563e0da3-6916-4158-bc9f-f11bf92d3240 в переменной из приведенного выше результата запроса .?

1 Ответ

1 голос
/ 21 мая 2019

Вы должны прочитать документы для 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...