| web | https://www.varrazzo.com/blog/ |
|---|---|
| Author |
April 27, 2026 » Blog » [Archived Version]
Time of changes. Last week, after 12 years working for the same company, I have terminated my employment. It was a destabilising moment, followed by a wave of excitement that I'm still riding, about what is to come. I still don't know about my next moves: for sure a break, and a journey already organized in a couple of weeks, after which I doubt I will be able to remain without working for a long time... My biggest desire would be to try and earn some living with free software projects. Some of…
Read MoreApril 27, 2026 » Blog » [Archived Version]
Note: Development of psycopg3 started: you can read something in psycopg3: a first report! I have been psycopg2 maintainer since 2010; before that, git says that my first contribution was in 2005. At that time, psycopg (one) was the tool to use, and psycopg2 was an interesting experiment. In several years of using psycopg2 daily and reading about expectations, frustrations, surprises experienced by other users, I have been making my mind about a better system, and if I had to release a versio…
Read MoreApril 27, 2026 » Blog » [Archived Version]
I have been cheerfully hacking on psycopg3 features for a while and reached the symbolic but relevant milestone of DBAPI 2.0 compatibility while using the psycopg2 test suite as a guideline to add features progressively. Then I thought about checking its speed... It wasn't a happy day. A few years ago, a new PostgreSQL driver was released: asyncpg. It is designed with speed in mind, at the expense of much else. It parses the PostgreSQL frontend/backend protocol using its own implementation (ins…
Read MoreApril 27, 2026 » Blog » [Archived Version]
Django is currently the most commonly used full-stack web framework for Python. It has been around for a good 15 years, emerging as a winner from a period in which Python was already mature, but its web development tools were comparatively much more immature and fragmented. Django allows the definition of objects in your program as "models" using the Model base class. They behave largely like normal Python classes, with added support to save into, and retrieve from, the relational database back…
Read MoreApril 27, 2026 » Blog » [Archived Version]
One of the main behavioural differences between psycopg2 and 3, and a big enought cause of incompatibility to require a "3", is the use of server-side binding vs. client-side (psycopg2 predates the FE-BE protocol supporting it). Passing Python objects to the server as separate arguments leads sometimes to a behaviour of the server different to what people are used to using psql and psycopg2. An example: what do you think cursor.execute("select %s, %s", ["hello", 10]) should fetch? I assume it…
Read More