{"id":29020426,"url":"https://github.com/mayasmess/skinny-orm","last_synced_at":"2025-07-18T16:07:28.016Z","repository":{"id":222871279,"uuid":"663861175","full_name":"MayasMess/skinny-orm","owner":"MayasMess","description":"⚡️\"Skinny ORM\" - a Python package for data persistence using dataclasses","archived":false,"fork":false,"pushed_at":"2024-05-16T08:39:06.000Z","size":24,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-26T01:05:38.793Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MayasMess.png","metadata":{"files":{"readme":"readme.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-08T09:40:34.000Z","updated_at":"2025-04-01T21:08:29.000Z","dependencies_parsed_at":"2025-06-26T01:05:40.385Z","dependency_job_id":"edef9725-0e48-49a0-855a-10a316d44cd4","html_url":"https://github.com/MayasMess/skinny-orm","commit_stats":null,"previous_names":["mayasmess/skinny-orm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MayasMess/skinny-orm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayasMess%2Fskinny-orm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayasMess%2Fskinny-orm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayasMess%2Fskinny-orm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayasMess%2Fskinny-orm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MayasMess","download_url":"https://codeload.github.com/MayasMess/skinny-orm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MayasMess%2Fskinny-orm/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262043923,"owners_count":23249731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-26T01:05:37.999Z","updated_at":"2025-07-18T16:07:27.999Z","avatar_url":"https://github.com/MayasMess.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skinny ORM\n\n\"Skinny ORM\" - a lightweight Python package that simplifies data storage, manipulation, and retrieval from a SQLite (maybe others later) database using Python dataclasses.\n\n\nIt's not really a \"Relational Mapper\". It's just a simple way to persist data.\n\nInstallation:\n- \n```shell script\n  pip install skinny_orm\n```\nor\n```shell script\n  poetry add skinny_orm\n```\n\nExample:\n-\n- Create your model:\n```python\nfrom dataclasses import dataclass\nfrom datetime import datetime\n\n@dataclass\nclass User:\n    id: int\n    name: str\n    age: int\n    birth: datetime\n    percentage: float\n\n```\n\n- Create a connection et an \"orm\" object\n\n```python\nimport sqlite3\nfrom skinny_orm.orm import Orm\n\nconnection = sqlite3.connect('database.db')\norm = Orm(connection)\n```\n\n- And Voila (no need to create tables. if they don't exist, it will create them automatically)\n\n```python\nusers = [\n    User(id=1, name='Naruto', age=15, birth=datetime.now(), percentage=9.99),\n    User(id=2, name='Sasuke', age=15, birth=datetime.now(), percentage=9.89),\n    User(id=3, name='Sakura', age=15, birth=datetime.now(), percentage=9.79),\n]\n# Bulk insertions (if the table \"User\" does not exist, it will create it)\norm.bulk_insert(users)\n# Selections (always end with .first() or .all() )\nnaruto: User = orm.select(User).where(User.name == 'Naruto').first()\nthe_boys: list[User] = orm.select(User).where((User.name == 'Naruto') | (User.name == 'Sasuke')).all()\n\n# Update data by setting specific fields\norm.update(User).set(User.age == 30).where(User.id == 1)\n# Or you can simply update the object with all the fields\nnaruto.age = 30\norm.update(naruto).using(User.id)\n\n# Bulk update objects\nusers_20_year_later = [\n    User(id=1, name='Naruto', age=35, birth=datetime.now(), percentage=9.99),\n    User(id=2, name='Sasuke', age=35, birth=datetime.now(), percentage=9.89),\n    User(id=3, name='Sakura', age=35, birth=datetime.now(), percentage=9.79),\n]\norm.bulk_update(users_20_year_later).using(User.id)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmayasmess%2Fskinny-orm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmayasmess%2Fskinny-orm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmayasmess%2Fskinny-orm/lists"}