تمرين إعادة البناء
ملاحظات 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()اكتب هنا