Skip to main content

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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlite_persist-0.1.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

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

Hashes for sqlite_persist-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9fb9a495038eb3e7c037742375a4d8dcc0344a68f2f8d1a254d2416e157aa15a
MD5 a6d03cb66595d4230393e411c691ea5c
BLAKE2b-256 4adfbd043ce6a6ef66c9c0d67b42d4f3f7f08d973085af7cbb874c9c10727518

See more details on using hashes here.

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

Hashes for sqlite_persist-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e9229983547f8cb5230a598a29c890aa0121533c43a1ba30f2c61d05c62a4b63
MD5 3bcc8fb17759304570e33b1a733ad2e3
BLAKE2b-256 e26476ee1ab693fd3032f4ec7a5ad8136104a27231e2a261939a7f22eee9dfe5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page