PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Définition du schéma pour toutes les requêtes d'une connexion dans psycopg2 :obtention d'une condition de concurrence lors de la définition de search_path

Je pense qu'une solution plus élégante serait de définir le search_path dans options paramètre de connect() , comme ceci :

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

Bien sûr, vous pouvez utiliser "options" dans le cadre de la chaîne de connexion. Mais l'utilisation d'arguments de mots clés évite tous les tracas liés aux concaténations de chaînes.

J'ai trouvé cette solution dans cette demande de fonctionnalité psycopg2 . Quant au paramètre "options" lui-même, il est mentionné ici .