Chris Angelico wrote: > On Thu, Aug 15, 2019 at 7:41 PM Gregory Ewing > <greg.ew...@canterbury.ac.nz> wrote: >> >> Chris Angelico wrote: >> > I prefer to say "Trails" for the table, and "Trail" would then refer >> > to a single row from that table. >> >> That makes sense for a data structure in your program that contains a >> collection of rows. But I've come to the view that SQL tends to read >> better if the names of the database tables are singular, because in SQL >> you're writing assertions about individual rows, not the tables in >> their entirety. >> >> So I would write something like >> >> select T.name, T.id from Trail T >> >> but I would assign the resulting list of rows to a variable named >> "trails" in my program. >> > > You're selecting from a collection of trails. I don't see a conflict > here. It's the same as taking a list of values and then filtering it - > even though assertions are made about individuals, you are filtering > the entire list: > > early_things = [thing for thing in things if thing.name < 'M']
If list comprehensions were like sql queries then the above would be early_things = [things.* from things where things.name < "M"] That doesn't read well as the condition works on one thing at a time. However, I'm so used to select things.* from things where things.name < "M" in the sql context that I still prefer it. Also, in simple queries you can omit the table name. -- https://mail.python.org/mailman/listinfo/python-list