sql >> Database teknologi >  >> RDS >> PostgreSQL

SQLAlchemy bekræfter SSL-forbindelse

Jeg bruger ikke postgres, så forhåbentlig gælder dette for dig.

SQLAlchemy tager de oplysninger, du angiver i url'en, og sender dem ned til det underliggende dbapi-bibliotek, der også er angivet i url'en, i dit tilfælde er det psycopg2.

Din motor instans forbinder kun til databasen, når det er nødvendigt, og sqlalchemy sender blot forbindelsesoplysningerne videre til driveren angivet i url'en, som returnerer en forbindelse, som sqlalchemy bruger.

Tilgiv, at dette er mysql, men burde være grundlæggende det samme for dig:

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

Kalder engine.connect() returnerer en sqlalchemy.engine.base.Connection forekomst, der har en hvortil docstringen siger:

Du kan dog se ovenfra, at den faktisk returnerer en sqlalchemy.pool._ConnectionFairy objekt, som fra dets docstring:

Her er L__7__5-code>in L__71__code>in" () metoden for forbindelsesfeen, og som du kan se har den en forbindelse attribut, der er den faktiske underliggende dbapi-forbindelse.

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

Med hensyn til hvilken information der er tilgængelig på dbapi-forbindelsesobjektet, afhænger det af implementeringen af ​​den pågældende driver. Psycopg2-forbindelsesobjekter har f.eks. en info attribut:

Den info objektet har attributter såsom ssl_in_use :

Og ssl_attribute :

Så du behøver ikke at grave for dybt for at komme til selve db-forbindelsen for at se, hvad der virkelig foregår.

Hvis du vil sikre dig, at alle klientforbindelser er ssl, kan du altid tvinge dem til .



  1. Sådan får du adgang til array-elementer

  2. Udfyld gruppedata til en bestemt serie på Highcharts

  3. Korrekt måde at gemme en tidszone i en database?

  4. Sammenligning af Windows Azure VM-ydeevne, del 2