Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

SQLite डेटाबेस के लिए पायथन इंटरफ़ेस

<घंटा/>

SQLite एक ओपन सोर्स डेटाबेस है और सर्वर रहित है जिसे किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है। संपूर्ण डेटाबेस एक एकल डिस्क फ़ाइल है जिसे ऑपरेटिंग सिस्टम के फ़ाइल सिस्टम में कहीं भी रखा जा सकता है। SQLite कमांड मानक SQL के समान हैं। SQLite का उपयोग आंतरिक डेटा संग्रहण के लिए ब्राउज़र जैसे अनुप्रयोगों द्वारा बड़े पैमाने पर किया जाता है। यह एम्बेडेड उपकरणों के लिए सुविधाजनक डेटा संग्रहण भी है।

मानक पायथन पुस्तकालय में SQLite डेटाबेस कनेक्टिविटी के लिए अंतर्निहित समर्थन है। इसमें sqlite3 मॉड्यूल शामिल है जो गेरहाद हारिंग द्वारा लिखित एक DB-API V2 अनुरूप मॉड्यूल है। यह डीबी-एपीआई 2.0 का पालन करता है।

DB-API को PEP-249 के अनुसार परिभाषित किया गया है ताकि विभिन्न डेटाबेस उत्पादों तक पहुँचने के लिए उपयोग किए जाने वाले पायथन मॉड्यूल के बीच समानता सुनिश्चित की जा सके।

डेटाबेस प्रबंधन प्रक्रिया में पहला कदम डेटाबेस का प्रतिनिधित्व करने वाली एक कनेक्शन वस्तु प्राप्त करना है। कनेक्शन का उपयोग करते हुए, एक कर्सर ऑब्जेक्ट प्राप्त करें। एक कर्सर ऑब्जेक्ट इटरेटर की अवधारणा के समान है। इसका उपयोग डेटाबेस प्रश्नों द्वारा लौटाई गई अलग-अलग पंक्तियों को संसाधित करने के लिए किया जाता है। कर्सर को पंक्तियों के समूह में एक पंक्ति के सूचक के रूप में देखा जा सकता है।

कर्सर ऑब्जेक्ट अंतर्निहित डेटाबेस पर CRUD संचालन करने के लिए SQL क्वेरी को निष्पादित करने में मदद करता है।

कनेक्ट () फ़ंक्शन

sqlite3 मॉड्यूल में यह फ़ंक्शन डिस्क पर मौजूदा डेटाबेस का प्रतिनिधित्व करने वाली कनेक्शन ऑब्जेक्ट देता है, या यदि यह पहले से मौजूद नहीं है तो एक नया डेटाबेस खोलता है।

<पूर्व>आयात sqlite3conn=sqlite3.connect('mydb.sqlite3')

SQLite इन-मेमोरी डेटाबेस के निर्माण का समर्थन करता है। उस उद्देश्य के लिए एक विशेष नाम ':मेमोरी:' का प्रयोग करें

conn=sqlite3.connect(':memory:')

निम्नलिखित विधियों को कनेक्शन वर्ग में परिभाषित किया गया है

कर्सर () यह विधि कर्सर ऑब्जेक्ट लौटाती है।

cur=conn.cursor()

प्रतिबद्ध () - यह विधि लगातार डिस्क पर लेनदेन करती है।

रोलबैक () - यह विधि डेटाबेस स्थिति को कमिट करने के लिए अंतिम कॉल पर पुनर्स्थापित करने के लिए लेनदेन को वापस लेती है ()। यह विधि SQL लेनदेन में अपवादों के मामले में डेटा स्थिरता सुनिश्चित करती है।

कोशिश करें:conn.commit()को छोड़कर:conn.rollback()

निष्पादित करें () - स्पष्ट रूप से कर्सर बनाता है और इसके निष्पादन () विधि को कॉल करता है

निष्पादक () - यह विधि परोक्ष रूप से कर्सर बनाती है और इसके एक्ज़ीक्यूटमैनी () विधि को कॉल करती है

create_function () - यह विधि एक उपयोगकर्ता-परिभाषित फ़ंक्शन बनाती है जिसे आप बाद में SQL कथनों में से उपयोग कर सकते हैं।

create_aggregate() - यह विधि एक समग्र कार्य बनाती है।

इटरडंप () - यह विधि SQL टेक्स्ट फॉर्मेट में डेटाबेस का डंप बनाती है।

आयात sqlite3con =sqlite3.connect('mydb.sqlite3')f =dump.sql', 'w')con.iterdump():f.write('%s\n' % line) में लाइन के लिए 

बैकअप () - यह विधि SQLite डेटाबेस का बैकअप तब भी बनाती है, जब तक इसे एक्सेस किया जा रहा हो।

source =sqlite3.connect('mydb.sqlite3')dest =sqlite3.connect(':memory:')source.backup(dest)

कर्सर ऑब्जेक्ट

कनेक्शन ऑब्जेक्ट से प्राप्त कर्सर निष्पादन () विधि का उपयोग करके डेटाबेस पर विभिन्न SQL संचालन करने की सुविधा प्रदान करता है। उदाहरण के लिए, निम्न कथन वर्तमान डेटाबेस में एक तालिका बनाता है

cur =conn.cursor()cur.execute("क्रिएट टेबल गेस्ट (आईडी इंटीजर प्राइमरी की, नाम टेक्स्ट (20) नॉट न्यूल, एड्रेस टेक्स्ट (40), सिटी टेक्स्ट (20));"

निम्नलिखित तालिका में एक रिकॉर्ड सम्मिलित करता है

cur.execute('''InSERT INTO GEST VALUES(1,'RAJU','ABIDS', 'Hyderabad');''')

बल्क एडिशन ऑपरेशन करने के लिए एक्ज़िक्यूमनी () विधि का उपयोग करें

addresses=[(2,'किशन', 'तिलक रोड', 'पुणे'), (3, 'लता', 'गांधी नगर', 'औरंगाबाद')]sql='इन्सर्ट इनटू गेस्ट वैल्यूज (:आईडी) , :NAME, :ADD, :CITY)'cur.executemany(sql, address)

क्वेरी का चयन करें एक परिणाम सेट बनाता है जिसमें क्वेरी के जवाब के रूप में लौटाए गए सभी रिकॉर्ड होते हैं। निष्पादित () विधि SELECT क्वेरी स्टेटमेंट का प्रतिनिधित्व करने वाली एक स्ट्रिंग का उपयोग करती है। परिणाम सेट का प्रतिनिधित्व करने वाले कर्सर में पंक्तियों को पुनः प्राप्त करने के लिए DB-API में दो विधियाँ हैं।

प्राप्त करें () - प्राप्त किए गए रिकॉर्ड के प्रत्येक कॉलम के मानों से युक्त टपल के रूप में सेट किए गए परिणाम से अगला उपलब्ध रिकॉर्ड प्राप्त करता है।

प्राप्त करें () - टुपल्स की सूची के रूप में शेष सभी रिकॉर्ड प्राप्त करें। प्रत्येक टपल एक पंक्ति से मेल खाता है और तालिका में प्रत्येक स्तंभ के मान रखता है।

निम्नलिखित कोड अतिथि तालिका में सभी रिकॉर्ड सूचीबद्ध करने के लिए fetchone () विधि का उपयोग करता है

sql ="मेहमानों से * चुनें;"cur =db.cursor()cur.execute(sql)जबकि ट्रू:रिकॉर्ड=cur.fetchone()अगर रिकॉर्ड==कोई नहीं:ब्रेकप्रिंट (रिकॉर्ड)

Fetchall () पद्धति का उपयोग निम्नलिखित कथन द्वारा प्रदर्शित किया जाता है

sql ="मेहमानों से * चुनें;"cur =db.cursor()cur.execute(sql)set =cur.fetchall() सेट में रिकॉर्ड के लिए:प्रिंट (रिकॉर्ड)

SQLite और Python प्रकार

SQLite डेटा प्रकार डिफ़ॉल्ट रूप से निम्न तालिका के अनुसार समकक्ष पायथन डेटा प्रकारों में मैप किए जाते हैं

पायथन प्रकार
<वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="72"> SQLite प्रकार
कोई नहीं
नल
int
इंटीजर
फ्लोट
असली
str
पाठ
बाइट्स
बीएलओबी

अपवाद

SQLite डेटाबेस के साथ SQL संचालन के संबंध में DB-API निम्नलिखित अपवादों को परिभाषित करता है -

<थेड>
DatabaseError
डेटाबेस से संबंधित त्रुटियों के लिए अपवाद उठाया गया।
IntegrityError
अपवाद तब उठाया जाता है जब डेटाबेस की रिलेशनल अखंडता प्रभावित होती है, उदा। एक विदेशी कुंजी जांच विफल हो जाती है। यह DatabaseError का एक उपवर्ग है।
ProgrammingError
प्रोग्रामिंग त्रुटियों के लिए उठाया गया अपवाद, उदाहरण के लिए तालिका नहीं मिली या पहले से मौजूद है, SQL कथन में सिंटैक्स त्रुटि, निर्दिष्ट मापदंडों की गलत संख्या, आदि।
OperationalError
उन त्रुटियों के लिए उठाया गया अपवाद जो डेटाबेस के संचालन से संबंधित हैं और जरूरी नहीं कि प्रोग्रामर के नियंत्रण में हों,
NotSupportedError
अपवाद तब उठाया जाता है जब एक विधि या डेटाबेस API का उपयोग किया जाता है जो डेटाबेस द्वारा समर्थित नहीं है।

  1. ऑब्जेक्ट-ओरिएंटेड डेटाबेस

    ऑब्जेक्ट-ओरिएंटेड डेटाबेस ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग और रिलेशनल डेटाबेस का एक संग्रह है। ऐसे कई आइटम हैं जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं जैसे C++, Java का उपयोग करके बनाए गए हैं, जिन्हें रिलेशनल डेटाबेस में स्टोर किया जा सकता है, लेकिन ऑब्जेक्ट-ओरिएंटेड डेटाबेस उन आइटम्स के लिए उपयुक्त

  1. पायथन में टिंकर बटन के लिए कमांड विधि बदलें

    बटन विजेट का महत्व यह है कि इसका उपयोग घटनाओं को संभालने के लिए एप्लिकेशन में कुछ संचालन करने के लिए किया जाता है। ऐसी घटनाओं को संभालने के लिए, हम आम तौर पर एक विधि को परिभाषित करते हैं जिसमें कुछ निश्चित संचालन होते हैं। मान लें कि हम ईवेंट . को बदलना चाहते हैं बटन प्रारंभ करने के बाद विधि। हम क

  1. डेटाबेस इंजन के लिए PyMongo और अन्य Python मॉड्यूल

    सामान्य तौर पर, डेवलपर्स डेटाबेस कार्यों को स्वचालित करने के लिए शेल स्क्रिप्ट का उपयोग करते हैं जैसे डेटा निर्यात और आयात करना, डेटाबेस (डीबी) आंकड़े एकत्र करना, टेबल स्पेस मॉनिटरिंग, ब्लॉकिंग सत्र, डीबी लॉक, और इसी तरह। अवलोकन पिछले सात या अधिक वर्षों में Python® सबसे लोकप्रिय प्रोग्रामिंग भाषाओं