Extend SQLModel functionalities.
Project description
SQLModel Plus
Installation
Install package using pip -> pip install sqlmodel-plus
Usage
Use SQLModelPlus class to define data models and tables as it inherits SQLModel.
To use in-built functions, an engine needs to set using set_engine method.
from sqlmodel_plus import SQLModelPlus, EngineException
from typing import Optional
from sqlmodel import Field, SQLModel, create_engine
class Hero(SQLModelPlus, table=True):
__tablename__ = "hero"
id: Optional[int] = Field(default=None, primary_key=True)
name: str
secret_name: str
age: Optional[int] = None
SQLModelPlus.set_engine(create_engine(f"sqlite:///database.db"))
If engine is not set it will raise EngineException
By using SQLModelPlus class, it provide following classmethods available to all inherited classes -
find_by_id
Hero.find_by_id(1)
Hero.find_by_id("uuid")
Hero.find_by_id((1, 2,))
Hero.find_by_id({"id": 1, "version": 3})
save
Create or Update Record in database.
hero = Hero(id=1, name="hero_1", secret_name="Secret_hero").save()
hero.name = "hero_2"
hero.save()
create
Create new record in database.
Hero(id=1, name="hero_1", secret_name="Secret_hero").create()
update
Update record in database.
hero = Hero(id=1, name="hero_1", secret_name="Secret_hero")
hero.name = "hero_2"
hero.update()
delete
Delete record from database
hero = Hero(id=1, name="hero_1", secret_name="Secret_hero").save()
hero.delete()
select
statement = Hero.select # This is equivalant to select(Hero)
statement.where(Hero.id == 1)
query
statement = Hero.select.where(Hero.id == 1)
Hero.query(statement).all
Hero.query("SELECT id FROM hero").first
Session
session = Hero.Session # Return Session object
session.exec(Hero.select).all()
with Hero.Session as session:
session.exec(Hero.select.where(Hero.id == 1)).first()
create_tables
Create tables in database.
It is equivalant of SQLModel.metadata.create_all method where you don't need to provide bind parameter.
SQLModelPlus.create_tables()
Handle multiple database
If you have multiple databases ORM models, then you use __scope__ class attribute to define database scopes.
Set __scope__ variable to any unique identifier string to identify databases.
from sqlalchemy.orm import registry
from sqlmodel_plus import SQLModelPlus
from typing import Optional
from sqlmodel import Field
class DatabaseA(SQLModelPlus, registry=registry()):
__scope__ = "db1"
class DatabaseB(SQLModelPlus, registry=registry()):
__scope__ = "db2"
DatabaseA.set_engine(create_engine(f"sqlite:///database_A.db"))
DatabaseB.set_engine(create_engine(f"sqlite:///database_B.db"))
# This uses DatabaseA as base ORM model and interacts with database_A
class TableA(DatabaseA, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
# This uses DatabaseB as base ORM model and interacts with database_B
class TableB(DatabaseB, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
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
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 sqlmodel_plus-0.2.2.tar.gz.
File metadata
- Download URL: sqlmodel_plus-0.2.2.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/23.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aec6bd9d474c236a77743b20a78e0cebf7c626ebdd42ce5c0c0cabc935703ab
|
|
| MD5 |
e6fa92e5309c3e86a44a576d0232d3a1
|
|
| BLAKE2b-256 |
9ed21b6a2a73bb1c1979d8fb246df34f4938917769c3e0c8c2709a3f6fbe0056
|
File details
Details for the file sqlmodel_plus-0.2.2-py3-none-any.whl.
File metadata
- Download URL: sqlmodel_plus-0.2.2-py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.6 Darwin/23.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add650be6e7770e7c71589aa8db2b72e32e9ad3d2bd499995d886de299a822d1
|
|
| MD5 |
812af02e3dd67f46e3eb270bb189660a
|
|
| BLAKE2b-256 |
ff8d0eee4faf3a04ddd0bb473edd607443a94d4a856cb1bb6a8b54fcc1ac3598
|