AzLearn

تمرين إعادة البناء

ملاحظات SQLite بسيطة

احفظ واعرض ملاحظات قصيرة في قاعدة SQLite محلية بالمكتبة القياسية.

python ~30 دقيقة متوسط
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
import argparse
import sqlite3
from datetime import datetime
from pathlib import Path


def connect(path: Path) -> sqlite3.Connection:
    connection = sqlite3.connect(path)
    connection.execute("PRAGMA foreign_keys = ON")
    connection.execute("PRAGMA journal_mode = WAL")
    connection.execute(
        "CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, body TEXT NOT NULL, created_at TEXT NOT NULL)"
    )
    return connection


def add_note(database: Path, body: str) -> None:
    with connect(database) as connection:
        connection.execute("INSERT INTO notes (body, created_at) VALUES (?, ?)", (body, datetime.now().isoformat()))


def list_notes(database: Path) -> None:
    with connect(database) as connection:
        rows = connection.execute("SELECT id, created_at, body FROM notes ORDER BY id").fetchall()
    for note_id, created_at, body in rows:
        print(f"{note_id}. {created_at[:19]} - {body}")


def main() -> None:
    parser = argparse.ArgumentParser(description="Store short notes in a local SQLite database.")
    parser.add_argument("database", type=Path)
    subparsers = parser.add_subparsers(dest="command", required=True)
    add = subparsers.add_parser("add")
    add.add_argument("body")
    subparsers.add_parser("list")
    args = parser.parse_args()

    if args.command == "add":
        add_note(args.database, args.body)
        print("Added")
    else:
        list_notes(args.database)


if __name__ == "__main__":
    main()
اكتب هنا