मुख्य सामग्री पर जाएँ

Python में psycopg2 के साथ PostgreSQL डेटाबेस प्रबंधित करना

Python के psycopg2 पैकेज का उपयोग करके PostgreSQL डेटाबेस बनाना, कनेक्ट करना और प्रबंधित करना सीखें।
· 14 मि॰ पढ़ें

AI के साथ खोजें

डेटा लगभग हर डिजिटल एप्लिकेशन के केंद्र में होता है जिसकी आप कल्पना कर सकते हैं। मोबाइल ऐप्स और कंप्यूटर गेम्स से लेकर बैंकिंग टूल्स और स्वचालित वाहनों तक, सब कुछ डेटा पर आधारित है। यह सारा डेटा कहाँ संग्रहीत होता है? उत्तर है—डेटाबेस। 

डेटाबेस संरचित डेटा का एक संगठित संग्रह होता है, जो आम तौर पर किसी कंप्यूटर सिस्टम में इलेक्ट्रॉनिक रूप से संग्रहीत किया जाता है। नए प्रकार के डेटाबेस के हालिया विकास (जो डेटा के बढ़ते वॉल्यूम और विविधता को संभालने के लिए डिज़ाइन किए गए हैं) के बावजूद, दुनिया भर में बड़ी मात्रा में डेटा अब भी रिलेशनल डेटाबेस में संग्रहित है। रिलेशनल डेटाबेस डेटा को पूर्व-परिभाषित टेबलों के संग्रह के रूप में संग्रहीत करते हैं जिनमें पंक्तियाँ और स्तंभ होते हैं, और ये एक या अधिक रिश्तों के माध्यम से जुड़े होते हैं। 

इन डेटाबेस से डेटा को मैनेज करना और निकालना डेटा उद्योग में एक आवश्यक कौशल है और इसकी मांग लगातार बढ़ रही है। डेटाबेस बनाने और प्रबंधित करने का मानक तरीका है SQL (Structured Query Language)। SQL बाज़ार में उपलब्ध कुछ सबसे लोकप्रिय रिलेशनल डेटाबेस—जैसे PostgreSQL, Microsoft SQL Server, MySQL, और SQLite—की आधारशिला है।

इस ट्यूटोरियल में, हम PostgreSQL-आधारित डेटाबेस पर ध्यान देंगे और Python का उपयोग करके उन्हें कैसे बनाया, कनेक्ट किया और प्रबंधित किया जा सकता है, यह सीखेंगे। SQL-Python का संयोजन आपकी डेटा साइंस यात्रा में मास्टर करने योग्य प्रमुख कौशलों में से एक है। Python को PostgreSQL से जोड़ने के लिए, हम psycopg2 पैकेज का उपयोग करेंगे, जो Python के लिए सबसे लोकप्रिय PostgreSQL डेटाबेस एडेप्टर है। तैयार हैं? चलिए शुरू करते हैं!

PostgreSQL को समझना

PostgreSQL एक हल्का, निःशुल्क और ओपन-सोर्स रिलेशनल डेटाबेस है। अपनी सिद्ध आर्किटेक्चर, विश्वसनीयता, डेटा अखंडता, और Python तथा R जैसे अन्य लोकप्रिय प्रोग्रामिंग भाषाओं के साथ सुगम इंटीग्रेशन के कारण, PostgreSQL उद्योग में बेहद स्वीकार्य है, और इसे हर आकार और क्षेत्र की कंपनियाँ उपयोग करती हैं। 

PostgreSQL SQL भाषा का उपयोग करता है और उसे अनेक ऐसी विशेषताओं के साथ विस्तारित करता है जो जटिल डेटा वर्कलोड को सुरक्षित रूप से संग्रहीत और स्केल कर सकती हैं। 

PostgreSQL का उपयोग शुरू करने के लिए, पहले आपको इसे अपने कंप्यूटर पर इंस्टॉल करना होगा। PostgreSQL के आधिकारिक साइट पर विभिन्न प्लेटफॉर्म और उपयोग के मामलों के लिए तैयार-उपयोग पैकेज, इंस्टालर और सोर्स कोड आर्काइव उपलब्ध हैं।

इस ट्यूटोरियल के लिए, हम Postgres App का उपयोग करेंगे, जो macOS के लिए एक सरल, नेटिव ऐप है और PostgreSQL के साथ शुरुआत करने के लिए आवश्यक सभी सुविधाएँ शामिल करता है। ध्यान रखें कि अन्य सभी उपलब्ध पैकेज भी समान रूप से मान्य हैं, और क्वेरी चलाने के लिए PostgreSQL सिंटैक्स पैकेजों में समान रहता है।

यदि आप PostgreSQL के बारे में और जानना चाहते हैं, तो हमारा Beginner's Guide to PostgreSQL और उपलब्ध SQL पाठ्यक्रमों को देखें।

psycopg2 को समझना

अपने सिस्टम या इंटरनेट पर पहले से बने किसी डेटाबेस से कनेक्ट करने के लिए, आपको Python को यह बताना होगा कि वह उसे कैसे ढूंढे। दूसरे शब्दों में, आपको Python को बताना होगा कि आपकी रुचि का डेटाबेस PostgreSQL है। 

Python में आपके पास कई विकल्प हैं। यहाँ हम psycopg2 का उपयोग करेंगे, जो संभवतः Python के लिए सबसे लोकप्रिय PostgreSQL डेटाबेस एडेप्टर है। Psycopg2 को आपके कंप्यूटर पर सही ढंग से काम करने के लिए कुछ पूर्वापेक्षाएँ चाहिए। इन्हें इंस्टॉल करने के बाद (अधिक जानकारी के लिए प्रलेखन पढ़ें), आप psycopg2 को किसी भी अन्य Python पैकेज की तरह इंस्टॉल कर सकते हैं:

pip install psycopg2

हालाँकि, यदि आप psycopg2 को सीधे उपयोग करना चाहते हैं, तो आप psycopg2-binary भी इंस्टॉल कर सकते हैं—यह पैकेज का स्टैंड-अलोन संस्करण है, जिसे किसी कंपाइलर या बाहरी लाइब्रेरी की आवश्यकता नहीं होती। नए उपयोगकर्ताओं के लिए यही अनुशंसित इंस्टॉलेशन है।

pip install psycopg2-binary

अंत में, यदि आप Conda वातावरण में Python का उपयोग कर रहे हैं, तो आपको psycopg2 को Anaconda इंस्टॉलेशन से इंस्टॉल करना चाहिए:

conda install -c anaconda psycopg2

अब जब सब सेट है, तो psycopg2 के साथ अपनी PostgreSQL सत्र से पहला कनेक्शन बनाते हैं!

Python को PostgreSQL से जोड़ना

Python का उपयोग करके PostgreSQL डेटाबेस के साथ इंटरैक्ट करने के लिए, हमें एक कनेक्शन बनाना होगा। यह psycopg2 की connect() फ़ंक्शन से किया जाता है, जो एक नया डेटाबेस सत्र बनाता है और एक नया कनेक्शन इंस्टेंस लौटाता है।

इस ट्यूटोरियल के लिए, हम “datacamp_courses” नामक एक लोकली होस्टेड डेटाबेस से कनेक्ट करेंगे। 

conn = psycopg2.connect(database = "datacamp_courses", 
                        user = "datacamp", 
                        host= 'localhost',
                        password = "postgresql_tutorial",
                        port = 5432)

आवश्यक बुनियादी कनेक्शन पैरामीटर हैं:

  • database. डेटाबेस का नाम।
  • user. प्रमाणन के लिए आवश्यक उपयोगकर्ता नाम।
  • password. प्रमाणन के लिए प्रयुक्त पासवर्ड।
  • host. डेटाबेस सर्वर का पता (हमारे मामले में डेटाबेस लोकल होस्टेड है, पर यह कोई IP पता भी हो सकता है)।
  • port. कनेक्शन पोर्ट नंबर (यदि नहीं दिया गया तो डिफ़ॉल्ट 5432)।

PostgreSQL में टेबल बनाना

datacamp_courses डेटाबेस में आपकी पहली टेबल बनाने का समय आ गया है। हम DataCamp कोर्स कैटलॉग में कुछ पाठ्यक्रमों की जानकारी वाली एक टेबल बनाना चाहते हैं। टेबल की स्कीमा निम्नलिखित है: 

स्पेसिफिकेशन हमें टेबल के कॉलम्स के बारे में काफी जानकारी देता है। टेबल की प्राइमरी की course_id होनी चाहिए, और इसका डेटा टाइप integer होना चाहिए। प्राइमरी की एक Constraint है जो कॉलम के मानों को non-null और अद्वितीय बनाए रखती है। इससे आप टेबल में मौजूद किसी विशिष्ट इंस्टेंस या इंस्टेंसों के सेट की विशिष्ट पहचान कर सकते हैं। 

शेष कॉलम कोर्स के नाम, कोर्स के इंस्ट्रक्टर के नाम और कोर्स के टॉपिक की जानकारी प्रदान करते हैं।

टेबल बनाने से पहले, यह समझना महत्वपूर्ण है कि आपने जो कनेक्शन इंस्टेंस बनाया है, वह कैसे काम करता है। मूल रूप से, कनेक्शन एक डेटाबेस सत्र को समाहित करता है, और यह आपको cursor() मेथड का उपयोग करके SELECT, INSERT, CREATE, UPDATE, या DELETE जैसी SQL कमांड और क्वेरी चलाने देता है, और commit() मेथड से बदलावों को स्थायी बनाता है। 

एक बार कर्सर इंस्टेंस बना लेने के बाद, आप execute() मेथड से डेटाबेस को कमांड भेज सकते हैं और fetchone(), fetchmany() या fetchall() का उपयोग करके टेबल से डेटा प्राप्त कर सकते हैं।

अंत में, जब भी आप अपने ऑपरेशंस पूरा कर लें, कर्सर और डेटाबेस से कनेक्शन बंद करना महत्वपूर्ण है। अन्यथा, ये सर्वर-साइड स्रोतों पर कब्जा बनाए रखेंगे। इसके लिए आप close() मेथड का उपयोग कर सकते हैं।

नीचे datacamp_courses टेबल बनाने का कोड दिया गया है:

# Open a cursor to perform database operations
cur = conn.cursor()
# Execute a command: create datacamp_courses table
cur.execute("""CREATE TABLE datacamp_courses(
            course_id SERIAL PRIMARY KEY,
            course_name VARCHAR (50) UNIQUE NOT NULL,
            course_instructor VARCHAR (100) NOT NULL,
            topic VARCHAR (20) NOT NULL);
            """)
# Make the changes to the database persistent
conn.commit()
# Close cursor and communication with the database
cur.close()
conn.close()

यह PostgreSQL पर टेबल बनाने का एक बहुत बुनियादी उदाहरण है, लेकिन चीजें इससे कहीं अधिक जटिल हो सकती हैं। यदि आप PostgreSQL डेटाबेस बनाना, उसकी संरचना, डेटा टाइप्स और डेटाबेस को नॉर्मलाइज़ करना सीखना चाहते हैं, तो हमारा Creating PostgreSQL Database पाठ्यक्रम देखें।

Python में बुनियादी PostgreSQL क्वेरी चलाना

datacamp_courses टेबल तैयार है; अब SQL का उपयोग करके कुछ बुनियादी क्वेरी चलाने का समय है!

INSERT 

आपने देखा होगा कि टेबल में अब तक कोई मान नहीं हैं। datacamp_courses टेबल में रिकॉर्ड बनाने के लिए हमें INSERT कमांड की आवश्यकता होगी।

cur = conn.cursor()

cur.execute("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES('Introduction to SQL','Izzy Weber','Julia')");

cur.execute("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES('Analyzing Survey Data in Python','EbunOluwa Andrew','Python')");

cur.execute("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES('Introduction to ChatGPT','James Chapman','Theory')");

cur.execute("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES('Introduction to Statistics in R','Maggie Matsui','R')");

cur.execute("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES('Hypothesis Testing in Python','James Chapman','Python')");

conn.commit()
cur.close()
conn.close()

परिणामी टेबल इस प्रकार दिखती है:

course_id

course_name

course_instructor

topic

1

Introduction to SQL

Izzy Weber

Julia

2

Analyzing Survey Data in Python

EbunOluwa Andrew

Python

3

Introduction to ChatGPT

James Chapman

Theory

4

Introduction to Statistics in R

Maggie Matsui

R

5

Hypothesis Testing in Python

James Chapman

Python

SELECT 

SQL डेटाबेस में डेटा पढ़ना आपकी डेटा साइंस यात्रा में सबसे आम कार्यों में से एक होगा। इसे आमतौर पर SELECT क्वेरी कहा जाता है। फिलहाल, देखते हैं datacamp_courses टेबल में क्या है।

हम क्लासिक SELECT * FROM database_name स्टेटमेंट को कॉल करेंगे ताकि टेबल में उपलब्ध सारा डेटा पढ़ा जा सके। फिर, हम fetchall() मेथड का उपयोग करके सभी उपलब्ध पंक्तियाँ प्राप्त करेंगे। ध्यान दें कि PostgreSQL course_id कॉलम के लिए स्वतः एक संख्यात्मक इंडेक्स बनाता है। 

cur = conn.cursor()
cur.execute('SELECT * FROM datacamp_courses;')
rows = cur.fetchall()
conn.commit()
conn.close()
for row in rows:
    print(row)
(1, 'Introduction to SQL', 'Izzy Weber', 'Julia')
(2, 'Analyzing Survey Data in Python', 'EbunOluwa Andrew', 'Python')
(3, 'Introduction to ChatGPT', 'James Chapman', 'Theory')
(4, 'Introduction to Statistics in R', 'Maggie Matsui', 'R')
(5, 'Hypothesis Testing in Python', 'James Chapman', 'Python')

UPDATE 

डेटा में अक्सर त्रुटियाँ होती हैं। आपने पिछले खंड में देखा होगा कि “Introduction to SQL” कोर्स से जुड़ा टॉपिक Julia है। कोर्स की जानकारी जाँचने पर हमें गलती का पता चला। हमें इसे बदलकर “SQL” लिखने की आवश्यकता है। यह UPDATE स्टेटमेंट से किया जा सकता है:

cur = conn.cursor()
cur.execute("UPDATE datacamp_courses SET topic = 'SQL' WHERE course_name = 'Introduction to SQL';")
conn.commit()
conn.close()

DELETE 

अंत में, आप अपनी टेबल में से किसी एक रिकॉर्ड को हटाना चाह सकते हैं। उदाहरण के लिए, चलिए Introduction to Statistics in R कोर्स को हटाते हैं:

cur = conn.cursor()
cur.execute("""DELETE from datacamp_courses WHERE course_name = 'Introduction to Statistics in R'""");
conn.commit()
cur.close()

Python में उन्नत PostgreSQL क्वेरी

पिछले खंड में, हमने सबसे बुनियादी SQL क्वेरी देखीं। लेकिन सीखने के लिए और भी बहुत कुछ है। आइए कुछ उन्नत क्वेरी देखते हैं।

ORDER BY

मान लीजिए आप अपने डेटाबेस को इंस्ट्रक्टर के नाम के अनुसार सॉर्ट करना चाहते हैं। आप ORDER BY स्टेटमेंट का उपयोग कर सकते हैं:

cur = conn.cursor()

cur.execute('SELECT * FROM datacamp_courses ORDER BY course_instructor')
rows = cur.fetchall()
for row in rows:
    print(row)
(2, 'Analyzing Survey Data in Python', 'EbunOluwa Andrew', 'Python')
(1, 'Introduction to SQL', 'Izzy Weber', 'SQL')
(3, 'Introduction to ChatGPT', 'James Chapman', 'Theory')
(4, 'Hypothesis Testing in Python', 'James Chapman', 'Python')

GROUP BY

आप विभिन्न डेटा समूहों के भीतर कुछ एग्रीगेट फ़ंक्शंस करना चाह सकते हैं। उदाहरण के लिए, आप अलग-अलग इंस्ट्रक्टर्स के अनुसार कोर्सों की संख्या निकालने में रुचि रख सकते हैं। इस तरह के ऑपरेशन आप GROUP BY फ़ंक्शन के साथ कर सकते हैं।

cur = conn.cursor()
cur.execute('SELECT course_instructor, COUNT(*) FROM datacamp_courses GROUP BY course_instructor')
rows = cur.fetchall()
for row in rows:
    print(row)
('James Chapman', 2)
('Izzy Weber', 1)
('EbunOluwa Andrew', 1)

JOIN

अब तक, हमने केवल datacamp_course टेबल के साथ काम किया है। लेकिन आप वास्तव में रिलेशनल डेटाबेस—जैसे PostgreSQL—की पूरी क्षमता का लाभ तभी उठाते हैं जब आप एक साथ कई टेबलों के साथ काम करते हैं। 

कई टेबलों को संयोजित करने का जादुई टूल है JOIN ऑपरेशन। मान लीजिए कि हमारे डेटाबेस में programming_languages नामक दूसरी टेबल है, जिसमें डेटा साइंस के शीर्ष प्रोग्रामिंग भाषाओं के बारे में बुनियादी जानकारी होती है—भाषा का नाम, TIOBE Index में स्थिति, और Datacamp पर उस भाषा से संबंधित कोर्सों की संख्या। टेबल इस प्रकार दिखती है:

language_id

language_name

course_number

tiobe_ranking

1

SQL

31

8

2

Python

157

1

3

R

132

16

4

Julia

2

33

5

Scala

1

38

मान लें कि आप दोनों टेबलों को मर्ज करना चाहते हैं ताकि कोर्सों की जानकारी के साथ-साथ भाषा की TIOBE इंडेक्स में स्थिति भी मिल सके। हम INNER JOIN का उपयोग करेंगे ताकि केवल उन्हीं प्रोग्रामिंग भाषाओं की जानकारी मिले जो datacamp_course टेबल में दिखाई देती हैं। 

cur = conn.cursor()
cur.execute("""SELECT course_name, course_instructor, topic, tiobe_ranking
FROM datacamp_courses
INNER JOIN programming_languages
ON datacamp_courses.topic = programming_languages.language_name""")
rows = cur.fetchall()
for row in rows:
    print(row)
('Introduction to SQL', 'Izzy Weber', 'SQL', 8)
('Analyzing Survey Data in Python', 'EbunOluwa Andrew', 'Python', 1)
('Hypothesis Testing in Python', 'James Chapman', 'Python', 1)

यह सिर्फ एक उदाहरण है, लेकिन SQL जोइन्स की संभावनाएँ अनंत हैं, इसलिए यह अनिवार्य विषय है। हमारे कोर्स, ट्यूटोरियल, और चीटशीट आपको शुरुआत करने में मदद करेंगे।

SQLAlchemy के साथ शुरुआत

Psycopg2 PostgreSQL डेटाबेस से कनेक्ट करने के लिए एक बढ़िया टूल है। लेकिन अगर आपको अलग-अलग SQL डेटाबेस—जैसे Oracle और MySQL—में होस्ट किए गए डेटाबेस के साथ काम करना पड़े तो? ऐसे परिदृश्यों में, किसी ऐसे टूल का उपयोग करना बेहतर हो सकता है जो अलग-अलग प्रकार के SQL डेटाबेस से कनेक्ट कर सके। इसके लिए SQLAlchemy एक बेहतरीन विकल्प है। 

सरल शब्दों में, SQLAlchemy उपयोगकर्ताओं को Python भाषा का उपयोग करके डेटाबेस से कनेक्ट होने, ऑब्जेक्ट-आधारित प्रोग्रामिंग के जरिए SQL क्वेरी चलाने, और वर्कफ़्लो को सुव्यवस्थित करने की सुविधा देता है। 

हालाँकि psycopg2 की तुलना में सिंटैक्स अलग है, आप लगभग वही काम कर सकते हैं। नीचे आप एक उदाहरण देख सकते हैं जिसमें हम अपने datacamp_courses डेटासेट्स से कनेक्ट करने के लिए एक इंजन बनाते हैं, और datacap_course टेबल में उपलब्ध सभी डेटा को पढ़ते हैं

import sqlalchemy as db


engine = db.create_engine("postgresql://datacamp@localhost:5432/datacamp_courses")
conn = engine.connect() 
output = conn.execute("SELECT * FROM datacamp_courses")
print(output.fetchall())
conn.close()
[(3, 'Introduction to ChatGPT', 'James Chapman', 'Theory'),
 (5, 'Hypothesis Testing in Python', 'James Chapman', 'Python'),
 (2, 'Analyzing Survey Data in Python', 'EbunOluwa Andrew', 'Python'),
 (1, 'Introduction to SQL', 'Izzy Weber', 'SQL')]

SQLAlchemy भी सीखने लायक एक और बेहतरीन टूल है। इस टूल का कामकाज झलकियों में देखने के लिए हमारा SQLALchemy Tutorial देखें।  

DataCamp DataLab में PostgreSQL का उपयोग

DataCamp में, हम डेटा साइंस को आसान और सभी के लिए सुलभ बनाने के लिए कड़ी मेहनत करते हैं। यही DataCamp DataLab—डेटा साइंस के लिए विशेष रूप से डिज़ाइन किया गया क्लाउड-आधारित नोटबुक—बनाने के पीछे का कारण था। आप DataCamp DataLab को Jupyter Notebook और Google Docs के मिश्रण के रूप में सोच सकते हैं, जो उपयोगकर्ताओं को अकेले या सामूहिक रूप से कोड लिखने, डेटा विश्लेषण करने और इनसाइट्स साझा करने देता है।

DataLab को PostgreSQL सहित अन्य SQL डेटाबेस से जोड़ना बेहद आसान है। DataLab आपको डेटा स्रोतों से सुरक्षित रूप से कनेक्ट होने देता है। साथ ही, आप Python या R के साथ अपना डेटा विश्लेषण निर्बाध रूप से जारी रख सकते हैं। आपको बस एक इंटीग्रेशन बनाना है—एक सीधी, नो-कोड प्रक्रिया का पालन करके—जहाँ आपको अपने कनेक्शन क्रेडेंशियल्स दर्ज करने होंगे।

अंत में, यदि आप इंटीग्रेशन आज़माना चाहते हैं लेकिन कनेक्ट करने के लिए आपके पास कोई PostgreSQL डेटाबेस नहीं है, तो आप हमारे सैंपल PostgreSQL डेटाबेस में से किसी का उपयोग कर सकते हैं!

DataCamp DataLab के बारे में जिज्ञासु हैं? डेटा साइंस के लिए इस नेक्स्ट-जेनरेशन नोटबुक के बारे में और जानें।

निष्कर्ष

शानदार काम! इस ट्यूटोरियल में, आपने PostgreSQL से परिचय पाया और psycopg2 पैकेज का उपयोग करके Python से बाहर निकले बिना डेटाबेस प्रबंधित करना सीखा। लेकिन यह यात्रा की केवल शुरुआत है। SQL डेटा साइंस में सबसे व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषाओं में से एक है। इसे सीखना भी काफ़ी आसान है, तो अब कोई बहाना नहीं।  

सौभाग्य से, Datacamp आपकी मदद के लिए तैयार है। यहाँ कुछ संसाधन हैं जो आपको PostgreSQL—और सामान्य रूप से SQL—में दक्ष बनने में मदद कर सकते हैं:

FAQs

psycopg2 और psycopg2-binary में क्या अंतर है?

psycopg2 सोर्स पैकेज है और इसके लिए आपके सिस्टम पर C कंपाइलर और PostgreSQL क्लाइंट लाइब्रेरीज़ इंस्टॉल होना आवश्यक है। psycopg2-binary प्रीकम्पाइल्ड संस्करण है जिसमें जल्दी शुरुआत करने के लिए आवश्यक सब कुछ शामिल होता है। यह डेवलपमेंट और सीखने के उद्देश्यों के लिए बढ़िया है, लेकिन संभावित बायनरी असंगतताओं के कारण प्रोडक्शन वातावरण के लिए अनुशंसित नहीं है।

Python में डेटाबेस कनेक्शन त्रुटियों को कैसे संभालें?

आप Python के try-except ब्लॉक्स का उपयोग करके कनेक्शन-संबंधित त्रुटियों को पकड़ और संभाल सकते हैं। उदाहरण के लिए:

import psycopg2
from psycopg2 import OperationalError

try:
    conn = psycopg2.connect(
        database="datacamp_courses",
        user="datacamp",
        password="postgresql_tutorial",
        host="localhost",
        port=5432
    )
except OperationalError as e:
    print(f"An error occurred: {e}")

यह आपके स्क्रिप्ट को सुचारू रूप से विफल होने देता है और आवश्यक होने पर कनेक्शन को पुनः प्रयास करने में भी सक्षम बनाता है।

मैं लोकल की जगह रिमोट PostgreSQL डेटाबेस से कैसे कनेक्ट करूँ?

रिमोट PostgreSQL डेटाबेस से कनेक्ट करने के लिए, localhost को रिमोट सर्वर के IP पते या डोमेन नाम से बदलें। सुनिश्चित करें:

  • डेटाबेस सर्वर बाहरी कनेक्शन की अनुमति देता है।
  • सही पोर्ट (आमतौर पर 5432) फ़ायरवॉल में खुला है।
  • आपकी PostgreSQL की pg_hba.conf फ़ाइल रिमोट कनेक्शनों को स्वीकार करने के लिए कॉन्फ़िगर है।
क्या मैं डेटाबेस क्रेडेंशियल्स को सुरक्षित रूप से स्टोर करने के लिए environment variables का उपयोग कर सकता/सकती हूँ?

हाँ, क्रेडेंशियल्स को एनवायरनमेंट वेरिएबल्स में स्टोर करना उन्हें हार्डकोड करने से अधिक सुरक्षित है। आप Python में os.environ का उपयोग करके इन्हें एक्सेस कर सकते हैं:

import os
conn = psycopg2.connect(
    database=os.environ["DB_NAME"],
    user=os.environ["DB_USER"],
    password=os.environ["DB_PASSWORD"],
    host=os.environ["DB_HOST"],
    port=os.environ["DB_PORT"]
)

लोकल रूप से इसे मैनेज करने के लिए .env फाइलें और python-dotenv जैसे टूल का उपयोग करें।

psycopg2 का उपयोग करते समय SQL injection से कैसे बचें?

हमेशा उपयोगकर्ता डेटा डालते समय स्ट्रिंग फ़ॉर्मैटिंग की जगह parameterized queries का उपयोग करें:

cur.execute("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES (%s, %s, %s)",
            ('Course Name', 'Instructor', 'Topic'))

यह आपके क्वेरीज़ में हानिकारक SQL कोड इंजेक्ट करने से दुर्भावनापूर्ण उपयोगकर्ताओं को रोकता है।

psycopg2 में एक साथ कई पंक्तियाँ कैसे अपडेट करें?

आप executemany() मेथड का उपयोग करके कई पंक्तियाँ कुशलता से insert या update कर सकते हैं:

courses = [
    ('Course A', 'Instructor A', 'Python'),
    ('Course B', 'Instructor B', 'R')
]
cur.executemany("INSERT INTO datacamp_courses(course_name, course_instructor, topic) VALUES (%s, %s, %s)", courses)
PostgreSQL में कौन-कौन से डेटा टाइप्स उपलब्ध हैं, और वे Python से कैसे मैप होते हैं?

यहाँ कुछ सामान्य PostgreSQL डेटा टाइप्स और उनके Python समकक्ष दिए गए हैं:

PostgreSQL TypePython Equivalent
INTEGERint
VARCHAR, TEXTstr
BOOLEANbool
DATE, TIMESTAMPdatetime.date, datetime.datetime
NUMERICdecimal.Decimal
Python का उपयोग करके PostgreSQL से CSV में डेटा कैसे एक्सपोर्ट करें?

आप SQL COPY कमांड के साथ copy_expert() मेथड का उपयोग कर सकते हैं:

with open('courses.csv', 'w') as f:
    cur.copy_expert("COPY datacamp_courses TO STDOUT WITH CSV HEADER", f)

यह बैकअप बनाने या विश्लेषण के लिए डेटा एक्सपोर्ट करने में उपयोगी है।

क्या मैं Jupyter Notebook में ये Python-PostgreSQL कमांड चला सकता/सकती हूँ?

बिल्कुल! psycopg2 Jupyter में निर्बाध रूप से काम करता है। बस यह सुनिश्चित करें कि आपकी क्वेरीज़ के बाद डेटाबेस कनेक्शन ठीक से बंद हो, क्योंकि Jupyter सत्र खुले रह सकते हैं और संसाधनों का उपयोग कर सकते हैं।

Python में असफल होने वाली SQL क्वेरीज़ को डिबग करने का सबसे अच्छा तरीका क्या है?

आप ये कर सकते हैं:

  • एक्ज़ीक्यूशन से पहले क्वेरी और पैरामीटर्स प्रिंट करें।
  • अधिक विवरण के लिए PostgreSQL लॉग्स का उपयोग करें।
  • psycopg2 लॉगिंग को connection.set_isolation_level() सेट करके सक्षम करें या यदि SQLAlchemy इंटरफ़ेस उपयोग कर रहे हैं तो उसके echo मोड का उपयोग करें।
Javier Canales Luna

लेखक

Javier Canales Luna

मैं एक स्वतंत्र डेटा विश्लेषक हूँ और दुनिया भर की कंपनियों व संगठनों के साथ डेटा साइंस परियोजनाओं पर सहयोग करता/करती हूँ। मैं 2+ वर्षों के अनुभव वाला/वाली डेटा साइंस प्रशिक्षक भी हूँ। मैं नियमित रूप से अंग्रेज़ी और स्पेनिश में डेटा साइंस से संबंधित लेख लिखता/लिखती हूँ, जिनमें से कुछ DataCamp, Towards Data Science और Analytics Vidhya जैसी स्थापित वेबसाइटों पर प्रकाशित हुए हैं। राजनीतिक विज्ञान और क़ानून की पृष्ठभूमि वाले/वाली डेटा वैज्ञानिक के रूप में, मेरा लक्ष्य लोक नीति, क़ानून और प्रौद्योगिकी के संगम पर काम करना है—विचारों की शक्ति का उपयोग करके ऐसे अभिनव समाधान और कथाएँ विकसित करना जो हमें तात्कालिक चुनौतियों, विशेषकर जलवायु संकट, से निपटने में मदद कर सकें। मैं स्वयं-अध्येता, सतत सीखने वाला/वाली और बहुविषयक दृष्टिकोण का प्रबल समर्थक/समर्थक हूँ। नई चीज़ें सीखने में कभी देर नहीं होती।

विषय