معجون پایتون و sqlite
سلام دوستان،
در این پست از وبلاگ میخوام یکی از پرکاربرد ترین بخش های برنامهنویسی یعنی کار با دیتابیس رو اختصارا معرفی کنم.
ما انواع مختلفی از دیتابیس داریم: MySQL,Sqlite, NoSQL, MongoDB, Oracle, SQL Server, …. معروفترین ها اینها هستن. در این پست من از دیتابیس sqlite ورژن ۳ استفاده میکنم چون یه دیتابیس سبک و فوقالعادهس.
تقریبا هر دیتابیسی رو که شما انتخاب کنید برای برنامهنویسی کوئری های مشابهی داره پس اگر یک دیتابیس رو به خوبی بلد باشید میتونید با بقیه دیتابیس ها هم به راحتی کار کنید. بهترین جای یادگیری که قطعاً داکیومنت هر پروژه یا کتابخانه و … هست اما میتونید از این وبسایت برای خواندن توضیحات sqlite3 استفاده کنید.
خب بریم که با پایتون ۳ و sqlite3 یک دفترچه تلفن ساده درست کنیم که اسم و فامیلی و شماره تلفن رو ذخیره میکنه.
در ابتدای کار کتابخانههای مورد نیازمون رو import میکنیم:
import sqlite3 as db
from time import sleep
من قصد دارم هر کوئری رو در قالب یک متد معرفی کنم.
متد اول: ساختن دیتابیس
برای ساختن یک دیتابیس با sqlite3 و python این متد را لازم دارم:
def create_database():
con = db.connect('database.db')
con.close()
print("OK - Database is created.")
حالا دیتابیس ما ساخته شد!
نوبت به این میرسه که یک جدول (Table) بسازیم که متد ساختن جدول به شکل زیر هست(اگر نیاز به توضیح بیشتر هست در بخش نظرات سؤال خودتون رو بپرسید.):
def create_table():
con = db.connect('database.db')
cur = con.cursor()
cur.execute("create table contact (id integer primary key autoincrement, fullname text, phone text)")
con.close()
print("OK - Table is created now.")
و حالا جدول ما هم ساخته شد.
تابع insert یا وارد کردن مقادیری به جدول هم به شکل زیر هست :
def insert_contact():
con = db.connect('database.db')
cur = con.cursor()
full_name = input("Enter Full name: ")
phone = input("Enter phone number : ")
cur.execute("insert into contact(fullname, phone) values ('{}', '{}')".format(full_name, phone))
con.commit()
con.close()
print("OK - Contact is added successfully.")
برای اینکه بتوانیم مقادیر جدول را ببینیم از کوئری SELECT استفاده میکنیم که به شکل زیر هست:
def show_contact():
con = db.connect('database.db')
cur = con.cursor()
cur.execute("select * from contact")
contact = cur.fetchall()
con.close()
print(contact)
متد بعدی متد Update هست که کدش بصورت زیر هست:
def edit_contact():
con = db.connect('database.db')
cur = con.cursor()
c_id = int(input("Enter an id for edit contact: "))
fullname = input("Enter full name: ")
phone = input("Enter phone number: ")
cur.execute("update contact set fullname = '{1}', phone = '{2}' where id = {0}".format(c_id, fullname, phone))
con.commit()
con.close()
print("OK - Contact is updated successfully.")
و در آخر حذف کردن یک رکورد هم به شکل زیر میباشید :
def delete_contact():
con = db.connect('database.db')
cur = con.cursor()
c_id = int(input("Enter an id for edit contact: "))
cur.execute("delete from contact where id = {}".format(c_id))
con.commit()
con.close()
print("OK - Contact is deleted successfully.")
دقت داشته باشید که ما برای تمامی تغییراتمان به یک primary key نیاز داریم که در طول تمامی تغییرات باید ثابت بماند که در اینجا هنگام تعریف کردن جدول خانه id را قرار دادهایم.
و برای اینکه بتوانیم از متد هایمان استفاده کنیم از یک حلقه while استفاده میکنیم :
while True:
options = int(input("#### Welcome ####\n# For first time you must create database(1) and table(2)\n1.Create database\n2.Create Table\n3.Insert contact\n4.Edit contact\n5.Delete contact\n6.Show contact\n7.Exit\n>>>"))
if options == 1:
create_database()
options = int(input("Continue? (Exit = 7)> "))
if options == 7:
print("Goodbye...")
sleep(2)
break
elif options == 2:
create_table()
options = int(input("Continue? (Exit = 7)> "))
if options == 7:
print("Goodbye...")
sleep(2)
break
elif options == 3:
insert_contact()
options = int(input("Continue? (Exit = 7)> "))
if options == 7:
print("Goodbye...")
sleep(2)
break
elif options == 4:
edit_contact()
options = int(input("Continue? (Exit = 7)> "))
if options == 7:
print("Goodbye...")
sleep(2)
break
elif options == 5:
delete_contact()
options = int(input("Continue? (Exit = 7)> "))
if options == 7:
print("Goodbye...")
sleep(2)
break
elif options == 6:
show_contact()
options = int(input("Continue? (Exit = 7)> "))
if options == 7:
print("Goodbye...")
sleep(2)
break
elif options == 7:
print("Goodbye...")
sleep(2)
break
موفق و پیروز باشید./
خیلی خوب بود