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

पोस्टग्रेस्क्ल में तानाशाही वस्तु जोड़ना

यदि आपका PostgreSQL संस्करण पर्याप्त रूप से नया (9.4+) है और psycopg संस्करण> =2.5.4 है, तो सभी कुंजियाँ स्ट्रिंग हैं और मानों को JSON के रूप में दर्शाया जा सकता है, इसे JSONB कॉलम में संग्रहीत करना सबसे अच्छा होगा। फिर, जरूरत पड़ने पर कॉलम भी खोजा जा सकेगा। बस इस तरह से टेबल बनाएं

CREATE TABLE thetable (
    uuid TEXT,
    dict JSONB
);

(... और स्वाभाविक रूप से आवश्यकतानुसार अनुक्रमणिका, प्राथमिक कुंजी आदि जोड़ें...) PostgreSQL को शब्दकोश भेजते समय आपको बस इसे Json के साथ लपेटना होगा अनुकूलक; PostgreSQL से प्राप्त होने पर JSONB मान स्वचालित रूप से एक शब्दकोश में परिवर्तित हो जाएगा, इस प्रकार सम्मिलित करना बन जाएगा

from psycopg2.extras import Json, DictCursor

cur = conn.cursor(cursor_factory=DictCursor)

cur.execute('INSERT into thetable (uuid, dict) values (%s, %s)',
    ['testName', Json({'id':'122','name':'test','number':'444-444-4444'})])

और चयन करना उतना ही आसान होगा जितना कि

cur.execute('SELECT dict FROM thetable where uuid = %s', ['testName'])
row = cur.fetchone()
print(row['dict']) # its now a dictionary object with all the keys restored
print(row['dict']['number']) # the value of the number key

JSONB के साथ, PostgreSQL केवल डिक्शनरी को टेक्स्ट के रूप में डंप करने की तुलना में मूल्यों को अधिक कुशलता से संग्रहीत कर सकता है। इसके अतिरिक्त, डेटा के साथ क्वेरी करना संभव हो जाता है, उदाहरण के लिए JSONB कॉलम से कुछ फ़ील्ड चुनें:

>>> cur.execute("SELECT dict->>'id', dict->>'number' FROM thetable")
>>> cur.fetchone()
['122', '444-444-4444']

या यदि आवश्यक हो तो आप प्रश्नों में उनका उपयोग कर सकते हैं:

>>> cur.execute("SELECT uuid FROM thetable WHERE dict->>'number' = %s',
    ['444-444-4444'])
>>> cur.fetchall()
[['testName', {'id': '122', 'name': 'test', 'number': '444-444-4444'}]]


  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 में NULL का उपयोग नहीं कर रहा है अभी भी शीर्षलेख में एक पूर्ण बिटमैप का उपयोग करता है?

  2. रेल में कच्चे एसक्यूएल को कैसे स्वच्छ करें 4

  3. आवारा वर्चुअलबॉक्स मशीन से होस्ट पोस्टग्रेएसक्यूएल से कैसे जुड़ें?

  4. कैसे CONCAT_WS () PostgreSQL में काम करता है

  5. विशेष को छोड़कर, अन्य सभी के बाद शून्य मानों को क्रमबद्ध करना