آموزش ارتباط با sqlite در پایتون
sqlite چیست ؟
sqlite یک دیتابیس سبک برای نگهداری اطلاعات است که نیاز به نصب برنامه ، سرور یا هرچیز دیگری ندارد. در واقع sqlite داده ها را درون یک فایل نگهداری میکند.
برای پروژه های کوچک استفاده از sqlite عالی است و برای یادگیری کار با دیتابیس در پایتون بهتر است ابتدا با sqlite کار کنید در این مقاله به شما آموزش میدهیم چطور از طریق پایتون به sqlite وصل شوید و عملیات CRUD ( ساختن ، خواندن ، بروزرسانی و حذف ) را روی جدول های دیتابیس انجام دهید.
ارتباط با sqlite از طریق کدهای پایتون
برای کار با sqlite در زبان برنامه نویسی پایتون به ماژول sqlite نیاز داریم و هرجا که خواستیم به دیتابیس sqlite وصل شویم باید این ماژول را ایمپورت کرده باشیم. برای ایمپورت کردن این ماژول کد زیر را در بالای فایل پایتونی خود بنویسید:
import sqlite3
بعد از ایپمورت کردن sqlite شما میتوانید یک کانکشن با دیتابیس بسازید که از طریق کد زیر قابل انجام است:
conn = sqlite3.connect('usr.db')
توجه کنید که اتصال بالا سعی میکند فایل usr.db را در مسیری که پروژه ی پایتون شما آنجاست باز کند ، اگر فایل پیدا نشد یک فایل به نام usr.db میسازد.
اجرای کدهای query دیتابیس در پایتون
همانطور که در بخش بالا دیدید ما یک اتصال به دیتابیسی به نام usr.db ساختیم . بعد از اتصال برای اینکه بتوانیم کوئری های sql را روی دیتابیس اجرا کنیم باید یک cursor داشته باشیم.
برای ساخت یک cursor جدید کد زیر را باید بنویسید :
c = conn.cursor()
در کد بالا متغیر c حاوی یک cursor از اتصال conn هست که در بالا ساختیم. حال میتوانیم هر نوع کوئری را روی c اجرا کنیم تا روی دیتابیس اعمال شود.
ساخت جدول جدید در sqlite با زبان پایتون
در ادامه ی کدهای بالا که اتصال به پایگاه داده sqlite را برقرار کردیم و حتی cursor ساختیم حال وقت آن است که یک جدول بسازیم. برای ساختن جدول روی متغیر c که یک cursor است باید کوئری اعمال کنیم. این کار را به شکل زیر انجام میدهیم:
c.execute( """ CREATE TABLE users(
first text,
last text,
pay integer
) """)
در صورتی که کدهای بالا را اجرا کنید یک جدول به نام users با ستون های first , last و pay ساخته میشود که دو ستون اولی از نوع text و سومین ستون از نوع عدد صحیح یعنی integer است.
توجه کنید که بعد از نوشتن کوئری های لازم در آخر کانکشن را کامیت کنید و ببندید برای این کار کدهای زیر را باید بنویسید :
conn.commit()
conn.close()
وارد کردن ( Insert ) داده های جدید به جدول sqlite با پایتون
اگر بخواهید یک موجودیت جدیدی به جدول خود اضافه کنید باید یک کوئری برای INSERT کردن بنویسید که این کار را به شکل نمونه کد زیر میتوانید انجام دهید :
c.execute("INSERT INTO users VALUES ('test','nikzad',2000) ")
در مثال بالا یک ردیف جدید به جدول اضافه میشود که شامل اطلاعات test و nikzad و 2000 برای فیلدهای مختلف جدول است.
اگر بخواهیم داده ها را از جای دیگری مثلا از یک object به دیتابیس وارد کنیم میتوانیم بصورت tuple پایتونی یا یک dictionary آنها را به کوئری بالا پاس بدهیم مثل نمونه کدهای زیر :
c.execute("insert into users values (?,?,?)",(usr2.first,usr2.last,usr2.pay))
یا
c.execute("insert into users values (:first,:last,:pay)",{
'first':usr1.first,
'last':usr1.last,
'pay':usr1.pay
})
طریقه ی select کردن یا واکشی داده های sqlite با پایتون
بعد از اینکه داده ها را در جدول دیتابیس ایمپورت کردیم وقت آن است که آنها را واکشی کنیم و نمایش دهیم تا مطمئن شویم داده ها درون جدول ثبت شده است.
برای اینکار از دستور SELECT استفاده میکنیم. نمونه کد زیر تمام موجودیت های درون جدول users را واکشی میکند و درون c میریزد:
c.execute("SELECT * FROM users ")
سپس ما میتوانیم به محتویات واکشی شده که درون متغیر c هستند دسترسی داشته باشیم برای این کار سه متود زیر به ما کمک میکند :
-
c.fetchall() برای واکشی تمامی اعضای درون c
-
fetchmany(5) برای تنها مقداری که تعیین میکنیم مثلا فقط ۵ عضو اولی
-
c.fetchone() برای واکشی تنها یک عضو و آن هم اولین عضو برگردانده شده از دیتابیس
سپس هرکدام از متودهای بالا را میتوانید درون دستور print قرار دهید و نتیجه را ببینید.
طریقه ی آپدیت کردن دیتابیس sqlite با پایتون
ممکن است بخواهیم داده های قدیمی را آپدیت کنیم. برای آپدیت کردن باید بدانیم که کدام فیلد را انتخاب کنیم و کدام فیلدهای آن را بروزرسانی کنیم.
نمونه کد زیر برای اجرای کوئری اپدیت کردن داده ها در sqlite با زبان برنامه نویسی پایتون است :
c.execute("""
UPDATE users SET pay= :pay
WHERE first = : first AND last = :last
""", {'first':usr.first , 'last':usr.last,'pay':pay})
همانطور که در کدهای بالا مشاهده میکنید ابتدا مقدار pay را برابر با مقدار جدیداش قرار دادیم و سپس یک WHERE برای شرط گذاری نوشتیم که مطمئن شویم first و last دقیقا همان چیزی هست که قراره اپدیت کنیم تا به فیلدهای دیگر صدمه زده نشود.
طریقه ی حذف داده ها از جدول sqlite با پایتون
اخرین مرحله از CRUD حذف کردن فیلدهای درون دیتابیس است که به راحتی با شرط گذاری میتوانید یکی از اعضای مد نظر را حذف کنیم یا حتی میتوانیم با یک دستور تمام اعضای درون یک جدول را پاکسازی کنیم.
در کد زیر ابتدا first و last را چک میکنیم تا وقتی برابر با یک مقدار خاص مد نظر ما بود آن فیلد از جدول حذف میشود :
c.execute("DELETE from users WHERE first = :first AND last = :last",{'first':usr.first , 'last':usr.last})
توجه کنید که usr در تمامی کدهای بالا یک شی از نوع user هست که میتواند هر نوع مقداری را درون خود بعنوان یک instance از کلاس User داشته باشد.