Migrate away from temporary tables for read queries
Summary:
To do so, we import a function from a recent version of psycopg2,
execute_values, which can execute queries efficiently with a list of values.
We also scale the cursor back from having things in SQL functions towards having
things inside the db.py database "backend". This will make it easier to iterate,
as we won't have to deploy function changes to twenty different databases.
After these changes, testing the web UI on a physical replica works.
Close T1073
Test Plan:
Local integration tests are happy; Navigating the frontend backed by
a physical replica seems to be okay now.
Reviewers: Reviewers!
Maniphest Tasks: T1073
Differential Revision: https://forge.softwareheritage.org/D340