sql >> Database >  >> RDS >> PostgreSQL

Schema instellen voor alle query's van een verbinding in psycopg2:racevoorwaarde ophalen bij het instellen van zoekpad

Ik denk dat een elegantere oplossing zou zijn om het search_path in te stellen in options parameter van connect() , zoals zo:

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

Natuurlijk kunt u "opties" gebruiken als onderdeel van de verbindingsreeks. Maar het gebruik van trefwoordargumenten voorkomt al het gedoe met aaneenschakelingen van tekenreeksen.

Ik vond deze oplossing in dit psycopg2 feature request . Wat betreft de parameter "opties" zelf, deze wordt vermeld hier .



  1. Niet-vastleggende groepen gebruiken in MySQL REGEXP

  2. Controleer of kolomtekenreeks in database een subtekenreeks is van een query in sqlite

  3. Laden van klasse `com.mysql.jdbc.Driver'. Dit wordt afgeraden. De nieuwe driverklasse is `com.mysql.cj.jdbc.Driver'

  4. Hoe kan ik MySQL-queryresultaten in CSV-indeling uitvoeren?