# list of all cities and number of inhabitants
from lino.apps.contacts.contacts_demo import startup
from lino.apps.contacts.contacts_tables import City
from lino.adamo.filters import NotEmpty
sess=startup()
qry=sess.query(City,"nation name inhabitants", orderBy="inhabitants")
qry.getColumnByName("inhabitants").addFilter(NotEmpty)
qry.show(width=50)
print
print qry.getSqlSelect()
demo.startup() starts a console Session, creates a demo Database on a temporary Connection, runs a Populator to fill the database with demo data. It then returns the Session instance which gives access to all this.
The Session instance has a query() method which returns a Query instance, in this example it is a query with leadTable Cities, three columns, and sorted by number of inhabitants.
Then we call Query.report() to print a DataReport whose total width we want to be 50 chars. (Default width on a console would be 79 chars.
Here is the output:
Cities where 'inhabitants' not empty
====================================
nation |name |inhabitan
| |ts
-------------------+-------------------+---------
Estonia |Ruhnu |58
Estonia |Vigala |1858
Estonia |Kilingi-Nõmme |2490
Belgium |Raeren |9933
Belgium |Kelmis |10175
Belgium |Eupen |17872
Estonia |Rakvere |18096
Estonia |Viljandi |20756
Estonia |Pärnu |52000
Belgium |Verviers |52739
Estonia |Kohtla-Järve |70800
Estonia |Narva |80300
Belgium |Mons |90992
Estonia |Tartu |109100
Belgium |Brugge |116848
Belgium |Liège |185608
Belgium |Charleroi |200983
Estonia |Tallinn |442000
Belgium |Bruxelles |1004239
SELECT nation_id, id, name, inhabitants FROM Cities WHERE inhabitants NOT NULL ORDER BY inhabitants
Refering articles:
- More examples (03.05.05) — A new system to write testable documentation examples. query1.py and babel1.py. TODO: write TestCase that tests them (done on 20050504)