私はpostgresを使用しないので、これがあなたにも当てはまることを願っています。
SQLAlchemyは、URLで指定した情報を取得し、それをURLで指定されている基になるdbapiライブラリ(この場合はpsycopg2)に渡します。
engine
インスタンスは必要な場合にのみデータベースに接続し、sqlalchemyは接続情報をURLで指定されたドライバーに渡すだけで、sqlalchemyが使用する接続を返します。
これはmysqlですが、基本的に同じである必要があります。
>>> 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()
を呼び出す sqlalchemy.engine.base.Connection
を返します connection property
ドキュメンテーション文字列には次のように書かれています:
ただし、上から見ると、実際にはsqlalchemy.pool._ConnectionFairy
が返されることがわかります。 docstringからのオブジェクト:
これが__init__()
接続の妖精の方法、そしてあなたが見ることができるようにそれはconnection
を持っています 実際の基礎となるdbapi接続である属性。
def __init__(self, dbapi_connection, connection_record, echo):
self.connection = dbapi_connection
self._connection_record = connection_record
self._echo = echo
dbapi接続オブジェクトで利用できる情報については、その特定のドライバーの実装によって異なります。たとえば、psycopg2接続オブジェクトにはinfo
があります。
属性:
そのinfo
オブジェクトには、 ssl_in_use
などの属性があります。
:
そして、 ssl_attribute
:
したがって、実際に何が起こっているのかを確認するために、実際のデータベース接続を取得するために深く掘り下げる必要はありません。
また、すべてのクライアント接続がSSLであることを確認したい場合は、いつでもforce them to
。