PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Impostazione dello schema per tutte le query di una connessione in psycopg2:ottenere race condition quando si imposta search_path

Penso che una soluzione più elegante sarebbe impostare il search_path in options parametro di connect() , in questo modo:

def connect(conn_config_file = 'Commons/config/conn_commons.json'):
    with open(conn_config_file) as config_file:    
        conn_config = json.load(config_file)

    schema = conn_config['schema']
    conn = psycopg2.connect(
        dbname=conn_config['dbname'],
        user=conn_config['user'],
        host=conn_config['host'],
        password=conn_config['password'],
        port=conn_config['port'],
        options=f'-c search_path={schema}',
    )
    return conn

Ovviamente puoi usare "opzioni" come parte della stringa di connessione. Ma l'uso degli argomenti delle parole chiave evita tutti i problemi con le concatenazioni di stringhe.

Ho trovato questa soluzione in questa richiesta di funzionalità psycopg2 . Per quanto riguarda il parametro "opzioni" stesso, viene menzionato qui .