sql >> Database >  >> RDS >> PostgreSQL

SQLAlchemy SSL-verbinding verifiëren

Ik gebruik geen postgres, dus hopelijk geldt dit ook voor jou.

SQLAlchemy neemt de informatie die u in de url opgeeft en geeft deze door aan de onderliggende dbapi-bibliotheek die ook in de url is gespecificeerd, in uw geval is het psycopg2.

Uw engine instantie maakt alleen verbinding met de database als dat nodig is, en sqlalchemy geeft de verbindingsinformatie gewoon door aan het stuurprogramma dat is opgegeven in de url, die een verbinding retourneert die sqlalchemy gebruikt.

Vergeef me dat dit mysql is, maar zou in principe hetzelfde moeten zijn voor jou:

>>> 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>

engine.connect() . aanroepen retourneert een sqlalchemy.engine.base.Connection instantie met een verbindingseigenschap waarvoor de docstring zegt:

U kunt echter van bovenaf zien dat het in feite een sqlalchemy.pool._ConnectionFairy retourneert object dat uit zijn docstring:

Hier is de methode van de verbindingsfee, en zoals je kunt zien heeft het een verbinding attribuut dat de werkelijke onderliggende dbapi-verbinding is.

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

Welke informatie beschikbaar is over het dbapi-verbindingsobject, hangt af van de implementatie van dat specifieke stuurprogramma. psycopg2-verbindingsobjecten hebben bijvoorbeeld een info kenmerk:

Die info object heeft attributen zoals ssl_in_use :

En ssl_attribute :

U hoeft dus niet te diep te graven om bij de daadwerkelijke db-verbinding te komen om te zien wat er werkelijk aan de hand is.

Als u er zeker van wilt zijn dat alle clientverbindingen ssl zijn, kunt u altijd dwing ze om .



  1. Gegevens extraheren uit xml-kolom in sql 2008

  2. Hoe het aantal keren dat het scheidingsteken voorkomt in een tekenreeks te tellen, met uitzondering van die tussen aanhalingstekens

  3. Probleem met automatisch verhogen in Mysql

  4. Hoe het maximum van twee waarden in MySQL te krijgen?