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 .