I\'d like to log the queries that psycopg2 is making, but the psycopg2 documentation doesn\'t really specify how LoggingConnection should be used.
import log
If you want to use LoggingConnection
directly, you need to provide the DSN as a libpq connection string to LoggingConnection()
- either a key/value connection string or a connection URI works:
from psycopg2.extras import LoggingConnection
DSN = "postgresql://john:secret@localhost/mydb"
#DSN = "host=localhost dbname=mydb user=john password=secret"
logfile = open('db.log', 'a')
conn = LoggingConnection(DSN)
conn.initialize(logfile)
cur = conn.cursor()
cur.execute('SELECT 1')
However, I would probably use a connection factory like @kristi demonstrated.
Seems like setting the connection_factory=LoggingConnection
works
import logging
import psycopg2
from psycopg2.extras import LoggingConnection
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
db_settings = {
"user": "abcd",
"password": "efgh",
"host": "postgres.db",
"database": "dev",
}
conn = psycopg2.connect(connection_factory=LoggingConnection, **db_settings)
conn.initialize(logger)
cur = conn.cursor()
cur.execute("SELECT * FROM table LIMIT 5")