mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-07-23 09:24:31 +02:00
Added db[table].rows iterator
This commit is contained in:
parent
62e1edeaf6
commit
3095f2e671
3 changed files with 26 additions and 0 deletions
|
|
@ -52,6 +52,17 @@ You can also iterate through the table objects themselves using the ``.tables``
|
|||
>>> db.tables
|
||||
[<Table dogs>]
|
||||
|
||||
Listing rows
|
||||
============
|
||||
|
||||
To iterate through dictionaries for each of the rows in a table, use ``.rows``::
|
||||
|
||||
>>> db = sqlite_utils.Database("dogs.db")
|
||||
>>> for row in db["dogs"].rows:
|
||||
... print(row)
|
||||
{'id': 1, 'age': 4, 'name': 'Cleo'}
|
||||
{'id': 2, 'age': 2, 'name': 'Pancakes'}
|
||||
|
||||
Creating tables
|
||||
===============
|
||||
|
||||
|
|
|
|||
|
|
@ -134,6 +134,15 @@ class Table:
|
|||
).fetchall()
|
||||
return [Column(*row) for row in rows]
|
||||
|
||||
@property
|
||||
def rows(self):
|
||||
if not self.exists:
|
||||
return []
|
||||
cursor = self.db.conn.execute("select * from [{}]".format(self.name))
|
||||
columns = [c[0] for c in cursor.description]
|
||||
for row in cursor:
|
||||
yield dict(zip(columns, row))
|
||||
|
||||
@property
|
||||
def pks(self):
|
||||
return [column.name for column in self.columns if column.is_pk]
|
||||
|
|
|
|||
|
|
@ -46,6 +46,12 @@ def test_columns(existing_db):
|
|||
]
|
||||
|
||||
|
||||
def test_rows(existing_db):
|
||||
assert [{"text": "one"}, {"text": "two"}, {"text": "three"}] == list(
|
||||
existing_db["foo"].rows
|
||||
)
|
||||
|
||||
|
||||
def test_schema(existing_db):
|
||||
assert "CREATE TABLE foo (text TEXT)" == existing_db["foo"].schema
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue