मैं पोस्टग्रेज का उपयोग नहीं करता, इसलिए उम्मीद है कि यह आपके लिए सही होगा।
SQLAlchemy आपके द्वारा url में प्रदान की जाने वाली जानकारी लेता है और इसे अंतर्निहित dbapi लाइब्रेरी में भेजता है जो url में भी निर्दिष्ट है, आपके मामले में यह 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
returns देता है उदाहरण जिसमें connection property
जिसके लिए डॉकस्ट्रिंग कहता है:
हालांकि, आप ऊपर से देख सकते हैं कि यह वास्तव में एक sqlalchemy.pool._ConnectionFairy
लौटाता है ऑब्जेक्ट जो इसके डॉकस्ट्रिंग से है:
यह रहा __init__()
कनेक्शन परी की विधि, और जैसा कि आप देख सकते हैं कि इसमें एक connection
. है विशेषता जो वास्तविक अंतर्निहित dbapi कनेक्शन है।
def __init__(self, dbapi_connection, connection_record, echo):
self.connection = dbapi_connection
self._connection_record = connection_record
self._echo = echo
डीबीपीआई कनेक्शन ऑब्जेक्ट पर कौन सी जानकारी उपलब्ध है, यह उस विशेष ड्राइवर के कार्यान्वयन पर निर्भर करता है। उदा psycopg2 कनेक्शन ऑब्जेक्ट में एक info
है
विशेषता:
वह info
ऑब्जेक्ट में ssl_in_use
जैसी विशेषताएं हैं
:
और ssl_attribute
:
इसलिए वास्तविक डीबी कनेक्शन प्राप्त करने के लिए आपको वास्तव में क्या हो रहा है यह देखने के लिए बहुत गहरी खुदाई करने की आवश्यकता नहीं है।
साथ ही, यदि आप यह सुनिश्चित करना चाहते हैं कि सभी क्लाइंट कनेक्शन ssl हैं, तो आप हमेशा force them to
।