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

एक मॉड्यूल बनाकर डेटाबेस (psycopg2) के उपयोग को सरल बनाएं

आपका मुख्य मुद्दा यह है कि प्रत्येक चर उस फ़ंक्शन तक सीमित है जिसमें आपने इसे लिखा है।
जब तक अन्यथा इस तरह घोषित नहीं किया जाता है:

def db_init():
    global conn
    conn = psycopg2....

एक बेहतर तरीका यह होगा कि इसे एक वर्ग में बदल दिया जाए, एक बुनियादी उदाहरण यह होगा:

import psycopg2

class MyDatabase():
    def __init__(self, db="mydb", user="postgres"):
        self.conn = psycopg2.connect(database=db, user=user)
        self.cur = self.conn.cursor()

    def query(self, query):
        self.cur.execute(query)

    def close(self):
        self.cur.close()
        self.conn.close()

db = MyDatabase()
db.query("SELECT * FROM table;")
db.close()

अब, SELECT चूंकि आप cur.execute() . का उपयोग कर रहे हैं, इसलिए क्वेरी बहुत कुछ नहीं करेगी .
लेकिन मैंने इसे इस उद्देश्य से रखा है कि आपके द्वारा लिखे गए कोड के समान कोड रखें, आप मूल्यों को वापस करने के लिए इसे स्वैप करना चाहेंगे, हालांकि यदि कोई क्वेरी कॉल कर रही है जो एक मूल्य वापस करने की उम्मीद है और इसी तरह।

फ़ंक्शन पर केंद्रित आपके दृष्टिकोण में "नेमस्पेस" समस्याएं होंगी जहां चर उस फ़ंक्शन के स्थानीय दायरे में रहते हैं और अन्य कार्यों के लिए सामान्य रूप से उन तक नहीं पहुंच सकते हैं।

इसके बजाय, वर्ग के दायरे वाले चर अपने स्वयं के चरों तक पहुंच सकते हैं और बॉक्स के बाहर सीमित नहीं हैं।

आप वैश्विक चर बना सकते हैं और उन्हें कार्यों में वैश्विक घोषित कर सकते हैं, लेकिन मुझे लगता है कि जैसा कि मैंने एक टिप्पणी में उल्लेख किया है:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेक स्पेक अधिकांश परीक्षणों में विफल रहा, लेकिन डायस्पोरा स्रोत पर रेल ठीक काम कर रही है

  2. एक अन्य उपयोगकर्ता के रूप में कपड़ा और सूडो

  3. एकाधिक स्ट्रिंग्स में से एक से मेल खाने के लिए SQL क्वेरी

  4. समय क्षेत्र डेलाइट बचत के साथ समय डालें

  5. अजगर में postgresql कथन के लिए पैरामीटर पास करने के लिए एक शब्दकोश का उपयोग करना