zPrima
zPrima

Reputation: 737

sqlalchemy - query.all() - list of tuples to dict

This is my call: session.query(User.username, User.first_name, User.last_name).all()

It returns: [('myUsername', 'myFirstname', 'myLastname')].

I want that to be the following format:
[{"username":"myUsername", "first_name":"myFirstname", "last_name":"myLastname"}]

I tried with [dict(zip(["username","first_name","lastname"], x))]
But it returns this: [{'username': ('myUsername', 'myFirstname', 'myLastname')}]

Upvotes: 4

Views: 6986

Answers (2)

Burhan Khalid
Burhan Khalid

Reputation: 174728

row = session.query(User.username, User.first_name, User.last_name).all()
as_dict = dict(zip(row.keys(), row))

Upvotes: 7

EdChum
EdChum

Reputation: 394419

The thing returned has a single entry containing a tuple, you need to convert that to a list:

In [123]:
[dict(zip(["username","first_name","lastname"], list(temp[0])))]

Out[123]:
[{'first_name': 'myFirstname',
  'lastname': 'myLastname',
  'username': 'myUsername'}]

In my code example above it just has a single entry, so in the general case you would need to iterate over whatever session.query().all() returns and populate your dict.

Upvotes: 2

Related Questions