در قسمت قبل دیدیم که چطور می توانیم یک دیتابیس ایجاد کنیم، در دیتابیس جدول درست کنیم و داده هایمان را به جدول اضافه نماییم.

حالا قصد داریم که داده های موجود را از جدول استخراج کنیم. کد زیر را ببینید:

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

در قسمت بعد با مرتب کردن داده ها آشنا خواهیم شد.