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í .