PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einstellungsschema für alle Abfragen einer Verbindung in psycopg2:Race-Condition beim Setzen von search_path erhalten

Ich denke, eine elegantere Lösung wäre, den search_path zu setzen in options Parameter von connect() , etwa so:

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

Natürlich können Sie "Optionen" als Teil der Verbindungszeichenfolge verwenden. Aber die Verwendung von Schlüsselwortargumenten verhindert den ganzen Ärger mit String-Verkettungen.

Ich habe diese Lösung in dieser psycopg2-Funktionsanfrage gefunden . Was den „options“-Parameter selbst betrifft, wird er erwähnt hier .