Tôi nghĩ rằng một giải pháp thanh lịch hơn sẽ là đặt search_path
trong options
tham số của connect()
, như vậy:
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
Tất nhiên, bạn có thể sử dụng "tùy chọn" như một phần của chuỗi kết nối. Nhưng việc sử dụng các đối số từ khóa ngăn chặn tất cả những rắc rối với việc nối chuỗi.
Tôi đã tìm thấy giải pháp này trong yêu cầu tính năng psycopg2 này . Đối với bản thân thông số "options", nó được đề cập đến tại đây .