Joins¶
Joins are handled automatically by Piccolo. They work everywhere you’d expect (select queries, where clauses, etc.).
A fluent interface is used, which lets you traverse foreign keys.
Here’s an example of a select query which uses joins (using the example schema):
# This gets the band's name, and the manager's name by joining to the
# manager table:
>>> await Band.select(Band.name, Band.manager.name)
And a where clause which uses joins:
# This automatically joins with the manager table to perform the where
# clause. It only returns the columns from the band table though by default.
>>> await Band.select().where(Band.manager.name == 'Guido')
Left joins are used.
join_on¶
Joins are usually performed using ForeignKey columns, though there may be
situations where you want to join using a column which isn’t a ForeignKey.
You can do this using join_on.
It’s generally best to join on unique columns.