PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQLAlchemy weryfikuje połączenie SSL

Nie używam postgresa, więc mam nadzieję, że to dotyczy Ciebie.

SQLAlchemy pobiera informacje podane w adresie URL i przekazuje je do podstawowej biblioteki dbapi, która jest również określona w adresie URL, w twoim przypadku jest to psycopg2.

Twój silnik instancja łączy się z bazą danych tylko wtedy, gdy jest to potrzebne, a sqlalchemy po prostu przekazuje informacje o połączeniu do sterownika określonego w adresie URL, który zwraca połączenie używane przez sqlalchemy.

Wybacz, że to jest mysql, ale dla Ciebie powinien być zasadniczo taki sam:

>>> engine
Engine(mysql+mysqlconnector://test:***@localhost/test)
>>> conn = engine.connect()
>>> conn
<sqlalchemy.engine.base.Connection object at 0x000001614ACBE2B0>
>>> conn.connection
<sqlalchemy.pool._ConnectionFairy object at 0x000001614BF08630>
>>> conn.connection.connection
<mysql.connector.connection_cext.CMySQLConnection object at 0x000001614AB7E1D0>

Wywołanie engine.connect() zwraca sqlalchemy.engine.base.Connection wystąpienie, które ma dla których dokumentacja mówi:

Jednak widać z góry, że faktycznie zwraca sqlalchemy.pool._ConnectionFairy obiekt, który z jego docstringu:

Oto metoda wróżki połączenia i jak widać ma ona połączenie atrybut, który jest rzeczywistym podstawowym połączeniem dbapi.

def __init__(self, dbapi_connection, connection_record, echo):
    self.connection = dbapi_connection
    self._connection_record = connection_record
    self._echo = echo

To, jakie informacje są dostępne w obiekcie połączenia dbapi, zależy od implementacji tego konkretnego sterownika. Np. obiekty połączenia psycopg2 mają info atrybut:

Te informacje obiekt ma atrybuty takie jak ssl_in_use :

Oraz ssl_attribute :

Nie musisz więc kopać zbyt głęboko, aby uzyskać rzeczywiste połączenie z bazą danych, aby zobaczyć, co się naprawdę dzieje.

Ponadto, jeśli chcesz mieć pewność, że wszystkie połączenia klientów są SSL, zawsze możesz wymuś ich .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. scalić wszystkie wiersze, kolumny w jedną kolumnę z połączonej tabeli

  2. Ustaw wartość w zależności od wykresu Helma

  3. Czy PostgreSQL obsługuje przezroczystą kompresję tabel (fragmentów)?

  4. PostgreSQL - wyłączanie ograniczeń

  5. Funkcja postgreSQL age():różne/nieoczekiwane wyniki przy lądowaniu w innym miesiącu