sql >> データベース >  >> RDS >> PostgreSQL

SQLAlchemyはSSL接続を確認します

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



    1. MariaDBでATAN2()がどのように機能するか

    2. デュアルテーブルからのSQLの日付と時刻の比較

    3. SQLで行に番号を付ける方法

    4. docker-compose.ymlからdockerコンテナにパッケージをインストールします