جدید خواندن و استخراج اطلاعات موجود در دیتابیس SQLite توسط پایتون
در قسمت قبل دیدیم که چطور می توانیم یک دیتابیس ایجاد کنیم، در دیتابیس جدول درست کنیم و داده هایمان را به جدول اضافه نماییم.
حالا قصد داریم که داده های موجود را از جدول استخراج کنیم. کد زیر را ببینید:
import os import sqlite3 # Get the current directory where your script is located current_directory = os.path.dirname(os.path.abspath(__file__)) db_path = os.path.join(current_directory, 'library.db') connection = sqlite3.connect(db_path) # query book data from the table query = connection.execute('SELECT * FROM books') data = query.fetchall() print(data)
کد با وارد کردن دو ماژول پایتون شروع می شود: os و sqlite3.
خطوط بعدی مسیر فایل پایگاه داده SQLite را تعیین می کند:
os.path.abspath(__file__) مسیر مطلق اسکریپت فعلی (فایلی که این کد در آن قرار دارد) را برمی گرداند.
os.path.dirname نام دایرکتوری را از مسیر مطلق استخراج می کند.
os.path.join مسیر دایرکتوری را با نام فایل ‘library.db’ ترکیب می کند تا مسیر کامل فایل پایگاه داده را ایجاد کند.
حالا باید یک اتصال یا connection به پایگاه داده برقرار کنیم.
sqlite3.connect(db_path) یک اتصال به پایگاه داده SQLite واقع در db_path برقرار می کند.
اکنون می توانیم یک Query یا پرس و جو اجرا کنیم:
query = connection.execute('SELECT * FROM books')
خط بالا تمام سطرهای جدول با نام “books” را بازیابی می کند و نتیجه پرس و جو در متغیر query ذخیره می شود.
بعد از ذخیره محتوای جدول می توانیم داده ها را با استفاده از fetchall استخراج کنیم و در متغیر data ذخیره و آن را چاپ کنیم.
این برنامه یک حالت خیلی ساده از خواندن اطلاعات از یک دیتابیس در sqlite بود.
اما اگر برنامه را اجرا کرده باشید متوجه می شوید که خروجی نمایش داده شده چندان منظم و واضح به نظر نمی رسد. با توجه به اینکه پایگاه داده ما ساختاریافته است و اطلاعات به صورت سطر و ستون در جدول ها ذخیره می شوند بهتر است ما هم آنها را به این ترتیب نمایش دهیم:
for row in data: print('Title: ', row[1]) print('Author: ', row[2]) print('Genre: ', row[3]) print('Year: ', row[4]) print('Pages: ', row[5]) print()
با این کار اطلاعات هر کتاب به طور مرتب در یک بلوک چاپ می شود:
Title: Getting started Raspberry Pi Pico in micropython Author: Ali Habibnia Genre: Electronics Year: 1402 Pages: 130 Title: IMPRACTICAL PYTHON PROJECTS Author: Lee Vaughan Genre: Programming Year: 2019 Pages: 478 Title: Dastane Yek Rooh Author: C.Shamissa Genre: Literature Year: 1993 Pages: 341
در قسمت بعد با مرتب کردن داده ها آشنا خواهیم شد.