PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

SQLAlchemy SSL कनेक्शन की पुष्टि करता है

मैं पोस्टग्रेज का उपयोग नहीं करता, इसलिए उम्मीद है कि यह आपके लिए सही होगा।

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL समय क्षेत्र के बिना टाइप टाइमस्टैम्प बदलता है -> समय क्षेत्र के साथ

  2. (पोस्टग्रे) SQL में एक-से-अनेक संबंध

  3. अपवाद के आधार पर विंडो फ़ंक्शन और समूह को पोस्टग्रेज़ करता है

  4. JPA के साथ VACUUM पूर्ण करें

  5. पिछले 3 घंटे का समय लें और 5 मिनट तक समूहित करें