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 का उपयोग किया जाता है जो डेटाबेस द्वारा समर्थित नहीं है। |