কম্পিউটার

SQLite ডাটাবেসের জন্য পাইথন ইন্টারফেস


SQLite হল একটি ওপেন সোর্স ডাটাবেস এবং সার্ভারহীন যার কোন কনফিগারেশনের প্রয়োজন নেই। সম্পূর্ণ ডাটাবেস হল একটি একক ডিস্ক ফাইল যা অপারেটিং সিস্টেমের ফাইল সিস্টেমের যেকোনো জায়গায় রাখা যায়। SQLite কমান্ড স্ট্যান্ডার্ড SQL অনুরূপ। SQLite অভ্যন্তরীণ ডেটা স্টোরেজের জন্য ব্রাউজারগুলির মতো অ্যাপ্লিকেশন দ্বারা ব্যাপকভাবে ব্যবহৃত হয়। এটি এমবেডেড ডিভাইসের জন্য সুবিধাজনক ডেটা স্টোরেজও।

স্ট্যান্ডার্ড পাইথন লাইব্রেরিতে SQLite ডাটাবেস সংযোগের জন্য অন্তর্নির্মিত সমর্থন রয়েছে। এটিতে sqlite3 মডিউল রয়েছে যা গেরহাদ হারিং দ্বারা লিখিত একটি DB-API V2 কমপ্লায়েন্ট মডিউল। এটি DB-API 2.0.

মেনে চলে

DB-API কে PEP-249 অনুযায়ী সংজ্ঞায়িত করা হয়েছে পাইথন মডিউলগুলির মধ্যে মিল নিশ্চিত করার জন্য যা বিভিন্ন ডেটাবেস পণ্য অ্যাক্সেস করতে ব্যবহৃত হয়৷

ডাটাবেস হ্যান্ডলিং প্রক্রিয়ার প্রথম ধাপ হল ডাটাবেসের প্রতিনিধিত্বকারী একটি সংযোগ বস্তু প্রাপ্ত করা। সংযোগ ব্যবহার করে পরবর্তী, একটি কার্সার অবজেক্ট পান। একটি কার্সার অবজেক্ট ইটারেটরের ধারণার অনুরূপ। এটি ডাটাবেস কোয়েরি দ্বারা ফিরে আসা পৃথক সারি প্রক্রিয়া করতে ব্যবহৃত হয়। একটি কার্সারকে সারির একটি সেটে একটি সারির পয়েন্টার হিসাবে দেখা যেতে পারে৷

কার্সার অবজেক্ট অন্তর্নিহিত ডাটাবেসে CRUD ক্রিয়াকলাপ সম্পাদনের জন্য SQL কোয়েরি নির্বাহ করতে সাহায্য করে।

কানেক্ট() ফাংশন

sqlite3 মডিউলের এই ফাংশনটি ডিস্কে বিদ্যমান একটি ডাটাবেসের প্রতিনিধিত্বকারী সংযোগ বস্তু প্রদান করে, অথবা যদি এটি ইতিমধ্যে বিদ্যমান না থাকে তবে একটি নতুন ডাটাবেস খোলে৷

sqlite3conn=sqlite3.connect('mydb.sqlite3') আমদানি করুন

SQLite ইন-মেমরি ডাটাবেস তৈরি সমর্থন করে। সেই উদ্দেশ্যে একটি বিশেষ নাম ':memory:' ব্যবহার করুন

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

নিম্নলিখিত পদ্ধতিগুলি সংযোগ শ্রেণিতে সংজ্ঞায়িত করা হয়েছে

কারসার() এই পদ্ধতিটি কার্সার অবজেক্ট রিটার্ন করে।

cur=conn.cursor()

কমিট() − এই পদ্ধতিটি ক্রমাগতভাবে ডিস্কে লেনদেন করে।

রোলব্যাক()৷ − এই পদ্ধতি ডাটাবেস স্থিতি পুনরুদ্ধার করতে লেনদেনগুলিকে শেষ কল টু কমিট() থেকে ফিরিয়ে আনে। এসকিউএল লেনদেনের ক্ষেত্রে এই পদ্ধতিটি ডেটা সামঞ্জস্যতা নিশ্চিত করে৷

try:conn.commit()ব্যতীত:conn.rollback()

চালনা () − অস্পষ্টভাবে কার্সার তৈরি করে এবং এর execute() পদ্ধতিকে কল করে

executemany() − এই পদ্ধতিটি পরোক্ষভাবে কার্সার তৈরি করে এবং এটিকে executemany() পদ্ধতি বলে

create_function() − এই পদ্ধতিটি একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন তৈরি করে যা আপনি পরে SQL স্টেটমেন্টের মধ্যে থেকে ব্যবহার করতে পারেন।

create_aggregate() − এই পদ্ধতিটি একটি সমষ্টিগত ফাংশন তৈরি করে।

iterdump() − এই পদ্ধতিটি SQL টেক্সট ফরম্যাটে ডাটাবেসের একটি ডাম্প তৈরি করে।

con.iterdump():f.write('%s\n' % লাইন)<প্রে>ইমপোর্ট sqlite3con =sqlite3.connect('mydb.sqlite3')f =dump.sql', 'w') লাইনের জন্য /প্রে>

ব্যাকআপ() − এই পদ্ধতিটি SQLite ডাটাবেসের একটি ব্যাকআপ তৈরি করে যখন এটি অ্যাক্সেস করা হয়।

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

কার্সার অবজেক্ট

কানেকশন অবজেক্ট থেকে প্রাপ্ত কার্সার execute() পদ্ধতি ব্যবহার করে ডাটাবেসে বিভিন্ন SQL ক্রিয়াকলাপ সম্পাদন করতে সহায়তা করে। উদাহরণস্বরূপ, নিম্নলিখিত বিবৃতি বর্তমান ডাটাবেসে একটি টেবিল তৈরি করে

cur =conn.cursor()cur.execute("টেবিল অতিথি তৈরি করুন ( আইডি পূর্ণসংখ্যা প্রাথমিক কী, নাম পাঠ্য (20) শূন্য নয়, ঠিকানা পাঠ্য (40), শহরের পাঠ্য (20));"

নিম্নোক্ত সারণিতে একটি রেকর্ড সন্নিবেশ করা হয়

cur.execute('''অতিথিদের মান (1,'রাজু','আবিডস', 'হায়দ্রাবাদ');''')

বাল্ক সংযোজন অপারেশন সম্পাদন করতে executemany() পদ্ধতি ব্যবহার করুন

ঠিকানা=[(2,'কিশান', 'তিলক রোড', 'পুনে'), (3, 'লতা', 'গান্ধী নগর', 'ঔরঙ্গাবাদ')]sql='অতিথিদের মূল্যবোধে ঢোকান (:ID , :NAME, :ADD, :CITY)'cur.executemany(sql, ঠিকানা)

SELECT ক্যোয়ারী একটি ফলাফলের সেট গঠন করে যাতে ক্যোয়ারির প্রতিক্রিয়া হিসাবে ফিরে আসা সমস্ত রেকর্ড থাকে। execute() পদ্ধতিটি SELECT ক্যোয়ারী স্টেটমেন্ট প্রতিনিধিত্বকারী একটি স্ট্রিং ব্যবহার করে। ফলাফল সেটের প্রতিনিধিত্বকারী কার্সারে সারিগুলি পুনরুদ্ধার করার জন্য DB-API-তে দুটি পদ্ধতি রয়েছে৷

আনয়ন() − পাওয়া রেকর্ডের প্রতিটি কলামের মান সমন্বিত একটি টিপল আকারে সেট করা ফলাফল থেকে পরবর্তী উপলব্ধ রেকর্ড নিয়ে আসে।

আনয়ন() − টিপলের তালিকার আকারে অবশিষ্ট সমস্ত রেকর্ড নিয়ে আসে। প্রতিটি টিপল একটি সারির সাথে মিলে যায় এবং এতে টেবিলের প্রতিটি কলামের মান থাকে।

নিম্নলিখিত কোড গেস্ট টেবিলে সমস্ত রেকর্ড তালিকাভুক্ত করতে fetchone() পদ্ধতি ব্যবহার করে

sql ="নির্বাচন * অতিথিদের থেকে;"cur =db.cursor()cur.execute(sql)while True:record=cur.fetchone()if record==None:breakprint (রেকর্ড)

fetchall() পদ্ধতির ব্যবহার নিম্নলিখিত বিবৃতি দ্বারা প্রদর্শিত হয়

sql ="নির্বাচন * অতিথিদের থেকে;"cur =db.cursor()cur.execute(sql)set =cur.fetchall() সেটে রেকর্ডের জন্য:প্রিন্ট (রেকর্ড)

SQLite এবং Python প্রকারগুলি

SQLite ডেটা প্রকারগুলি ডিফল্টভাবে নিম্নলিখিত সারণী অনুসারে সমতুল্য পাইথন ডেটা প্রকারে ম্যাপ করা হয়

পাইথন প্রকার
SQLite প্রকার
কোনটি নয়৷
শূন্য৷
int
INTEGER
ভাসা
বাস্তব
str
TEXT
বাইট
BLOB

ব্যতিক্রম

DB-API একটি SQLite ডাটাবেসের সাথে SQL অপারেশনের ক্ষেত্রে নিম্নলিখিত ব্যতিক্রমগুলিকে সংজ্ঞায়িত করে -

ডেটাবেস ত্রুটি
ডাটাবেসের সাথে সম্পর্কিত ত্রুটির জন্য ব্যতিক্রম উত্থাপিত হয়েছে৷
IntegrityError
ব্যতিক্রম উত্থাপিত হয় যখন ডাটাবেসের সম্পর্কগত অখণ্ডতা প্রভাবিত হয়, যেমন একটি বিদেশী কী চেক ব্যর্থ হয়. এটি DatabaseError এর একটি সাবক্লাস।
প্রোগ্রামিং ত্রুটি৷
প্রোগ্রামিং ত্রুটির জন্য উত্থাপিত ব্যতিক্রম, যেমন টেবিল পাওয়া যায় নি বা ইতিমধ্যেই বিদ্যমান, SQL স্টেটমেন্টে সিনট্যাক্স ত্রুটি, নির্দিষ্ট প্যারামিটারের ভুল সংখ্যা, ইত্যাদি।
অপারেশনাল ত্রুটি
ডাটাবেসের ক্রিয়াকলাপের সাথে সম্পর্কিত ত্রুটির জন্য উত্থাপিত ব্যতিক্রম এবং প্রোগ্রামারের নিয়ন্ত্রণে অগত্যা,
সমর্থিত নয় ত্রুটি
একটি পদ্ধতি বা ডাটাবেস API ব্যবহার করা হলে ব্যতিক্রম উত্থাপিত হয়েছে যা ডাটাবেস দ্বারা সমর্থিত নয়৷

  1. অবজেক্ট-ওরিয়েন্টেড ডাটাবেস

  2. ক্লাউড ডাটাবেস

  3. পাইথনে Tkinter বোতামের জন্য কমান্ড পদ্ধতি পরিবর্তন করুন

  4. ডাটাবেস ইঞ্জিনের জন্য PyMongo এবং অন্যান্য পাইথন মডিউল