# Asynchronous psycopg2
psycopg2 connections are thread-safe[1], which means that many threads can access the same database, either:
- Every thread creating its own
connection
, or - Every thread using the same connection but each creating different
cursor
s.
I'd generally recommend, if possible, to have separate connections per thread as that will mean that SQL queries will be executed in different sessions.
# asyncio support in psycopg2
psycopg2 does not support async
and await
. However, there is another library built on top of psycopg2 that does: aiopg[2].
With aiopg
you can use the async
and await
keywords, and you'll gain the ability to multi-task while waiting for database operations.
If you don't know how asyncio
or the async
and await
keywords work, I'd recommend a section in our Complete Python Course (opens new window) which covers this extensively. This talk (opens new window) by David Beazley is also excellent.
Enjoyed this article?
You'll love the complete video course!
- Complete video lessons for each topic
- Get the most out of your learning
- Master Advanced PostgreSQL
- Get one-on-one help from a real person