sql >> Databasteknik >  >> RDS >> PostgreSQL

SQLAlchemy verifiera SSL-anslutning

Jag använder inte postgres så förhoppningsvis stämmer detta för dig.

SQLAlchemy tar informationen som du anger i webbadressen och skickar den till det underliggande dbapi-biblioteket som också anges i webbadressen, i ditt fall är det psycopg2.

Din motor instans ansluter bara till databasen när det behövs, och sqlalchemy skickar bara anslutningsinformationen vidare till drivrutinen som anges i URL:en som returnerar en anslutning som sqlalchemy använder.

Ursäkta att detta är mysql, men borde vara i grunden samma för 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>

Anropar engine.connect() returnerar en sqlalchemy.engine.base.Connection instans som har en L__71_codein. () anslutningsfenans metod, och som du kan se har den en anslutning attribut som är den faktiska underliggande dbapi-anslutningen.

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

När det gäller vilken information som är tillgänglig på dbapi-anslutningsobjektet, beror det på implementeringen av just den drivrutinen. Psycopg2-anslutningsobjekt har till exempel en info attribut:

Den informationen objektet har attribut som ssl_in_use :

Och ssl_attribute :

Så du behöver inte gräva för djupt för att komma till själva db-anslutningen för att se vad som verkligen pågår.

Om du också vill säkerställa att alla klientanslutningar är ssl kan du alltid tvinga dem till .



  1. Använd funktionen Max() för att välja gruppvärden

  2. Anropa en medlemsfunktion real_escape_string() på ett icke-objekt när du använder MySQLi

  3. MySQL Understanding Basic Joins

  4. Sequelize.js:Fråga för inte i array ($ne för objekt i array)