Saya tidak menggunakan postgres jadi semoga ini berlaku untuk Anda.
SQLAlchemy mengambil info yang Anda berikan di url dan meneruskannya ke pustaka dbapi yang mendasari yang juga ditentukan dalam url, dalam kasus Anda adalah psycopg2.
engine
Anda instance hanya terhubung ke database saat dibutuhkan, dan sqlalchemy hanya meneruskan info koneksi ke driver yang ditentukan dalam url yang mengembalikan koneksi yang digunakan sqlalchemy.
Maafkan ini mysql, tetapi pada dasarnya sama untuk Anda:
>>> 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>
Memanggil engine.connect()
mengembalikan sqlalchemy.engine.base.Connection
instance yang memiliki properti koneksi connection property
yang menurut docstring:
Namun, Anda dapat melihat dari atas bahwa itu benar-benar mengembalikan sqlalchemy.pool._ConnectionFairy
objek yang dari docstringnya:
Berikut adalah __init__()
metode peri koneksi, dan seperti yang Anda lihat memiliki connection
atribut yang merupakan koneksi dbapi sebenarnya.
def __init__(self, dbapi_connection, connection_record, echo):
self.connection = dbapi_connection
self._connection_record = connection_record
self._echo = echo
Mengenai info apa yang tersedia di objek koneksi dbapi, itu tergantung pada implementasi driver tersebut. Misalnya objek koneksi psycopg2 memiliki info
atribut:
info
itu objek memiliki atribut seperti ssl_in_use
:
Dan ssl_attribute
:
Jadi Anda tidak perlu menggali terlalu dalam untuk mendapatkan koneksi db yang sebenarnya untuk melihat apa yang sebenarnya terjadi.
Juga, jika Anda ingin memastikan bahwa semua koneksi klien adalah ssl, Anda selalu dapat force them to
.