Files
sqlmodel-pg-kit/notebooks/01_sync_crud.ipynb
2025-08-17 22:18:45 +08:00

19 lines
2.6 KiB
Plaintext

{
"cells": [
{"cell_type":"markdown","metadata":{},"source":["# 01 — Sync CRUD Tutorial\n\n","Covers create/get/list/update/delete using the kit's helpers. Optional SQLite override for quick demo."]},
{"cell_type":"markdown","metadata":{},"source":["## 0. Install (optional)\n","Uncomment if you haven't installed the package in this env."]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# %pip install -e . pytest\n"]},
{"cell_type":"markdown","metadata":{},"source":["## 1. Optional: use in-memory SQLite for demo\n","Comment this cell if you want to use Postgres via SQL_*/PG* env vars."]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from sqlmodel_pg_kit import db\n","db.cfg = db.DatabaseConfig(host='', port=0, user='', password='', database=':memory:', sslmode='disable')\n","db.engine = db.create_engine('sqlite:///:memory:', echo=False)\n"]},
{"cell_type":"markdown","metadata":{},"source":["## 2. CRUD operations (generic Repository)\n","Define a simple model and use the generic Repository for CRUD."]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from typing import Optional\n","from sqlmodel import SQLModel, Field\n","from sqlmodel_pg_kit import create_all, Repository\n","from sqlmodel_pg_kit.db import get_session\n","\n","class Hero(SQLModel, table=True):\n"," id: Optional[int] = Field(default=None, primary_key=True)\n"," name: str = Field(index=True)\n"," age: Optional[int] = None\n","\n","create_all()\n","repo = Repository(Hero)\n","with get_session() as s:\n"," h = repo.create(s, {'name': 'Alice', 'age': 20})\n"," h\n"]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["with get_session() as s:\n"," h2 = repo.get(s, h.id)\n"," h2\n"]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["with get_session() as s:\n"," h3 = repo.update(s, h.id, age=21)\n"," h3\n"]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["with get_session() as s:\n"," page = repo.list(s, page=1, size=5)\n"," [(x.id, x.name, x.age) for x in page]\n"]},
{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["with get_session() as s:\n"," ok = repo.delete(s, h.id)\n"," ok\n"]}
],
"metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"name": "python", "pygments_lexer": "ipython3"}},
"nbformat": 4,
"nbformat_minor": 5
}