PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Задаване на схема за всички заявки на връзка в psycopg2:Получаване на условие за състезание при настройка на search_path

Мисля, че по-елегантно решение би било да зададете 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", той се споменава тук .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Yii Framework:Таблицата за клас активен запис не може да бъде намерена в базата данни

  2. Как работи функцията Radians() в PostgreSQL

  3. Обединете редове postgres и заменете стойностите с най-новите, когато не са null

  4. Postgresql:Проверете дали схемата съществува?

  5. Кумулативен сбор от стойности по месеци, попълване на липсващите месеци