Classe de base ORM légère pour SQLite
Project description
sqlite-persistence
Classe de base ORM légère pour SQLite, sans dépendances externes.
Installation
uv add git+https://github.com/vous/sqlite-persist.git
Usage minimal
from sqlite_persist import Persistence
import sqlite3
con = sqlite3.connect("ma_base.db")
class User(Persistence):
def __init__(self, id, username, password):
self.id = id
self.username = username
self.password = password
# Lecture
user = User.get(1, con=con)
users = User.get_by({"username": "alice"}, con=con)
users = User.get_by({"username": "alice"}, order_by="username", con=con)
# Écriture
user.save(con=con) # insert ou replace selon présence de la PK
user.update(con=con) # update strict (la ligne doit exister)
user.insert(con=con) # insert, met à jour self.id après
user.delete(con=con)
# Batch
User.save_all([u1, u2, u3], con=con)
User.delete_all([u1, u2], con=con)
User.delete_where({"username": "bob"}, con=con)
User.update_where(values={"password": "..."}, where={"username": "alice"}, con=con)
Injection automatique de connexion (ex. Flask)
Créer une classe intermédiaire qui surcharge _con() :
from sqlite_persistence import Persistence
from mon_app.db import get_db
class FlaskPersistence(Persistence):
@classmethod
def _con(cls):
return get_db()
class User(FlaskPersistence):
...
# con= n'est plus nécessaire
user = User.get(1)
user.save()
Clé primaire composite
class Day(FlaskPersistence):
_pk = ("month", "day")
day = Day.get("12", "01")
Attributs transitoires
Tout attribut commençant par _ est ignoré lors des opérations SQL :
class User(FlaskPersistence):
_table = "user" # si le nom de table diffère de la classe, par défaut le nom de la classe
def __init__(self, id, name):
self.id = id
self.name = name
self._transient = None # jamais envoyé en base
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sqlite_persist-0.1.0.tar.gz
(3.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sqlite_persist-0.1.0.tar.gz.
File metadata
- Download URL: sqlite_persist-0.1.0.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fb9a495038eb3e7c037742375a4d8dcc0344a68f2f8d1a254d2416e157aa15a
|
|
| MD5 |
a6d03cb66595d4230393e411c691ea5c
|
|
| BLAKE2b-256 |
4adfbd043ce6a6ef66c9c0d67b42d4f3f7f08d973085af7cbb874c9c10727518
|
File details
Details for the file sqlite_persist-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sqlite_persist-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9229983547f8cb5230a598a29c890aa0121533c43a1ba30f2c61d05c62a4b63
|
|
| MD5 |
3bcc8fb17759304570e33b1a733ad2e3
|
|
| BLAKE2b-256 |
e26476ee1ab693fd3032f4ec7a5ad8136104a27231e2a261939a7f22eee9dfe5
|