PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Configurando o esquema para todas as consultas de uma conexão em psycopg2:Obtendo condição de corrida ao configurar search_path


Acho que uma solução mais elegante seria definir o search_path em options parâmetro de connect() , igual a:
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

Claro, você pode usar "opções" como parte da string de conexão. Mas usar argumentos de palavras-chave evita todo o incômodo com concatenações de strings.

Encontrei esta solução nesta solicitação de recurso psycopg2 . Quanto ao próprio parâmetro "options", é mencionado aqui .