sql >> Base de Datos >  >> RDS >> PostgreSQL

Configuración del esquema para todas las consultas de una conexión en psycopg2:Obtención de la condición de carrera al configurar search_path

Creo que una solución más elegante sería configurar search_path en options parámetro de connect() , así:

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

Por supuesto, puede usar "opciones" como parte de la cadena de conexión. Pero el uso de argumentos de palabras clave evita todas las molestias con las concatenaciones de cadenas.

Encontré esta solución en esta solicitud de función de psycopg2 . En cuanto al parámetro "opciones" en sí, se menciona aquí .