Мисля, че по-елегантно решение би било да зададете search_path
в options
параметър на connect()
, така:
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
Разбира се, можете да използвате "опции" като част от низа за свързване. Но използването на аргументи за ключови думи предотвратява всички проблеми с конкатенациите на низове.
Намерих това решение в тази заявка за функция на psycopg2 . Що се отнася до самия параметър "options", той се споменава тук .