आपका मुख्य मुद्दा यह है कि प्रत्येक चर उस फ़ंक्शन तक सीमित है जिसमें आपने इसे लिखा है।
जब तक अन्यथा इस तरह घोषित नहीं किया जाता है:
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()
. का उपयोग कर रहे हैं, इसलिए क्वेरी बहुत कुछ नहीं करेगी .
लेकिन मैंने इसे इस उद्देश्य से रखा है कि आपके द्वारा लिखे गए कोड के समान कोड रखें, आप मूल्यों को वापस करने के लिए इसे स्वैप करना चाहेंगे, हालांकि यदि कोई क्वेरी कॉल कर रही है जो एक मूल्य वापस करने की उम्मीद है और इसी तरह।पी>
फ़ंक्शन पर केंद्रित आपके दृष्टिकोण में "नेमस्पेस" समस्याएं होंगी जहां चर उस फ़ंक्शन के स्थानीय दायरे में रहते हैं और अन्य कार्यों के लिए सामान्य रूप से उन तक नहीं पहुंच सकते हैं।
इसके बजाय, वर्ग के दायरे वाले चर अपने स्वयं के चरों तक पहुंच सकते हैं और बॉक्स के बाहर सीमित नहीं हैं।
आप वैश्विक चर बना सकते हैं और उन्हें कार्यों में वैश्विक घोषित कर सकते हैं, लेकिन मुझे लगता है कि जैसा कि मैंने एक टिप्पणी में उल्लेख किया है: