-
-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
table.count property, plus made a start on table documentation
- Loading branch information
Simon Willison
committed
Jul 31, 2018
1 parent
0d63128
commit b69f8b6
Showing
4 changed files
with
80 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
======= | ||
Table | ||
======= | ||
|
||
Tables are accessed using the indexing operator, like so: | ||
|
||
.. code-block:: python | ||
from sqlite_utils.db import Database | ||
import sqlite3 | ||
database = Database(sqlite3.connect("my_database.db")) | ||
table = database["my_table"] | ||
If the table does not yet exist, it will be created the first time you attempt to insert or upsert data into it. | ||
|
||
Introspection | ||
============= | ||
|
||
If you have loaded an existing table, you can use introspection to find out more about it:: | ||
|
||
>>> db["PlantType"] | ||
<sqlite_utils.db.Table at 0x10f5960b8> | ||
>>> db["PlantType"].count | ||
3 | ||
>>> db["PlantType"].columns | ||
[Column(cid=0, name='id', type='INTEGER', notnull=0, default_value=None, is_pk=1), | ||
Column(cid=1, name='value', type='TEXT', notnull=0, default_value=None, is_pk=0)] | ||
>>> db["Street_Tree_List"].count | ||
189144 | ||
>>> db["Street_Tree_List"].foreign_keys | ||
[ForeignKey(table='Street_Tree_List', column='qLegalStatus', other_table='qLegalStatus', other_column='id'), | ||
ForeignKey(table='Street_Tree_List', column='qCareAssistant', other_table='qCareAssistant', other_column='id'), | ||
ForeignKey(table='Street_Tree_List', column='qSiteInfo', other_table='qSiteInfo', other_column='id'), | ||
ForeignKey(table='Street_Tree_List', column='qSpecies', other_table='qSpecies', other_column='id'), | ||
ForeignKey(table='Street_Tree_List', column='qCaretaker', other_table='qCaretaker', other_column='id'), | ||
ForeignKey(table='Street_Tree_List', column='PlantType', other_table='PlantType', other_column='id')] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
from sqlite_utils import db | ||
import sqlite3 | ||
import pytest | ||
|
||
|
||
@pytest.fixture | ||
def existing_db(): | ||
database = db.Database(sqlite3.connect(":memory:")) | ||
database.conn.executescript( | ||
""" | ||
CREATE TABLE foo (text TEXT); | ||
INSERT INTO foo (text) values ("one"); | ||
INSERT INTO foo (text) values ("two"); | ||
INSERT INTO foo (text) values ("three"); | ||
""" | ||
) | ||
return database | ||
|
||
|
||
def test_count(existing_db): | ||
assert 3 == existing_db["foo"].count | ||
|
||
|
||
def test_columns(existing_db): | ||
table = existing_db["foo"] | ||
assert [{"name": "text", "type": "TEXT"}] == [ | ||
{"name": col.name, "type": col.type} for col in table.columns | ||
] |