API Documentation (LuminaDB)ο
Subpackagesο
- luminadb.models package
- Submodules
- Module contents
BaseModelBaseModel.all()BaseModel.atomic()BaseModel.belongs_to()BaseModel.bulk_create()BaseModel.bulk_delete()BaseModel.bulk_update()BaseModel.count()BaseModel.create()BaseModel.create_table()BaseModel.delete()BaseModel.exists()BaseModel.find()BaseModel.find_or_fail()BaseModel.first()BaseModel.first_or_fail()BaseModel.get_table()BaseModel.has_many()BaseModel.has_one()BaseModel.one()BaseModel.query()BaseModel.raw()BaseModel.to_dict()BaseModel.to_safe_instance()BaseModel.update()BaseModel.upsert()BaseModel.where()
ForeignPrimaryQueryBuilderUniquehook()model()validate()
- luminadb.workers package
Submodulesο
- luminadb.column module
- luminadb.csv module
- luminadb.database module
DatabaseDatabase.check_table()Database.close()Database.closedDatabase.commit()Database.create_index()Database.create_table()Database.cursor()Database.delete_index()Database.delete_table()Database.foreign_pragma()Database.optimize()Database.pathDatabase.rename_table()Database.reset_table()Database.rollback()Database.shrink_memory()Database.sqlDatabase.table()Database.tables()Database.vacuum()
- luminadb.errors module
- luminadb.functions module
- luminadb.locals module
- luminadb.operators module
- luminadb.query_builder module
- luminadb.signature module
- luminadb.subquery module
- luminadb.table module
TableTable.add_column()Table.auto_commitTable.columns()Table.commit()Table.count()Table.delete()Table.delete_one()Table.deletedTable.force_dirtyTable.force_nodelete()Table.in_transactionTable.insert()Table.insert_many()Table.insert_multiple()Table.nameTable.paginate_select()Table.rename_column()Table.rollback()Table.select()Table.select_one()Table.subquery()Table.update()Table.update_one()
- luminadb.typings module
- luminadb.utils module
Module contentsο
Database
- class luminadb.BaseModel[source]ο
Bases:
objectBase class for all Models using Model API
- belongs_to(related_model: Type[T])[source]ο
Retrieve the related model that this instance belongs to.
- classmethod bulk_delete(keys: list[Any], key: str)[source]ο
Delete multiple records using a primary key.
- classmethod bulk_update(records: list[dict], key: str | object = <object object>)[source]ο
Update multiple records using a primary key or provided key.
- classmethod create_table(db: Database)[source]ο
Create table according to annotations and schema from __schema__
- classmethod find_or_fail(amount: int)[source]ο
Return models relative to the amount and when returned is equal to 0, throws an error
- classmethod first(**kwargs)[source]ο
Return the first matching record or None if no match is found.
- classmethod first_or_fail(**kwargs)[source]ο
Return the first matching record or raise an error if no match is found.
- has_many(related: ~typing.Type[~luminadb.models.T], foreign_key: str | object = <object object>)[source]ο
Ensure related_model has a Foreign key pointing to self
- has_one(related_model: Type[T])[source]ο
Retrieve the related model where this instance is referenced.
- classmethod one(**kwargs)[source]ο
Return exactly one record. Raises error if multiple results exist.
- class luminadb.Column[source]ο
Bases:
objecttip: for foreign_ref, you can split with / to separate table and column name. e.g: user/id
- property auto_incrementο
Auto increment enabled?
- property defaultο
Default value
- property foreignο
Is foreign enabled?
- property nameο
Column Name
- property nullableο
Nullable
- property on_deleteο
Delete setting
- property on_updateο
Update setting
- property primaryο
Is primary or not?
- property raw_sourceο
Source / Foreign Reference
- property sourceο
Source / Foreign Reference
- property source_columnο
Source column / Foreign reference column
- property typeο
Type
- property uniqueο
Is unique
- class luminadb.Database(path: str, **kwargs)[source]ο
Bases:
objectSqlite3 database, this provide basic integration.
- Custom flags:
strict : Certain actions are prevented when active, i.e, initializing nonexistent tables forgive: Certain actions are replaced when active, i.e, replacing .create_table to .table
when a table exists
- property closedο
Is database closed?
- create_table(table: str, columns: Iterable[Column] | Iterable[BuilderColumn])[source]ο
Create table
- cursor() WithCursor[source]ο
Create cursor
- foreign_pragma(bool_state: Literal['ON', 'OFF', ''] = '')[source]ο
Enable/disable foreign key pragma
- property pathο
Path to SQL Connection
- reset_table(table: str, columns: Iterable[Column] | Iterable[BuilderColumn]) Table[source]ο
Reset existing table with new, this rewrote entire table than altering it.
- property sqlο
SQL Connection
- class luminadb.Foreign(column: str, target: str | Type[Model])[source]ο
Bases:
ConstraintForeign constraint
- apply(type_: BuilderColumn)[source]ο
Apply this constraint to an column
- on_delete(constraint: ConstraintEnum)[source]ο
On delete constraint
- on_update(constraint: ConstraintEnum)[source]ο
On update constraint
- property targetο
Target foreign constraint
- class luminadb.Index[source]ο
Bases:
object- property index_columnsο
Return columns target
- property index_nameο
Return index name
- property index_targetο
Return index target
- property index_uniqueο
Return unique property
- class luminadb.Primary(column: str, auto: bool = False)[source]ο
Bases:
ConstraintPrimary constraint
Accepts optional auto flag to enable auto-increment on integer primary columns when using the BuilderColumn API.
- apply(type_: BuilderColumn)[source]ο
Apply this constraint as primary. If auto was requested, enable auto increment on the builder column as well.
- property auto: boolο
Auto increment
- class luminadb.Table(parent: Database, table: str, columns: Iterable[Column] | None = None)[source]ο
Bases:
objectTable. Make sure you remember how the table goes.
- add_column(column: Column | BuilderColumn)[source]ο
Add column to table
- property auto_commitο
Auto commit state of this instance
- delete(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, limit: int = 0, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None)[source]ο
Delete row or rows
- Parameters:
where (Condition, optional) β Condition to determine deletion See Signature class about conditional stuff. Defaults to None.
limit (int, optional) β Limit deletion by integer. Defaults to 0.
order (Optional[Orders], optional) β Order of deletion. Defaults to None.
- Returns:
Rows affected
- Return type:
int
- delete_one(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None)[source]ο
Delete a row
- Parameters:
where (Condition, optional) β Conditional to determine deletion.
None. (Defaults to)
order (Optional[Orders], optional) β Order of deletion. Defaults to None.
- property deletedο
Is table deleted
- property force_dirtyο
Force dirty state, whether .selecting() on dirty/uncommitted data is allowed or not
- force_nodelete()[source]ο
Force βundeleteβ table. Used if table was mistakenly assigned as deleted.
- property in_transactionο
Returns True if the table is in an active transaction.
- insert(data: dict[str, Any])[source]ο
Insert data to current table
- Parameters:
data (Data) β Data to insert. Make sure itβs compatible with the table.
- Returns:
Last rowid
- Return type:
int
- insert_multiple(datas: list[dict[str, Any]])[source]ο
Insert multiple values
- Parameters:
datas (Iterable[Data]) β Data to be inserted.
- property nameο
Table name
- paginate_select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: tuple[str, ...] | Literal['*'] = '*', page: int = 0, length: int = 10, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[False] = False) Generator[list[Row[Any]], None, None][source]ο
- paginate_select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: str | tuple[str] = '_COLUMN', page: int = 0, length: int = 10, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[False] = False) Generator[list[Any], None, None]
- paginate_select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: tuple[str, ...] | Literal['*'] = '*', page: int = 0, length: int = 10, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[True] = True) Generator[Row[list[Any]], None, None]
Paginate select
- Parameters:
where (Condition, optional) β Confitions to use. Defaults to None.
what (OnlyColumn, optional) β Select what you want. Default to None.
page (int) β Which page number be returned first
length (int, optional) β Pagination length. Defaults to 10.
order (Optional[Orders], optional) β Order. Defaults to None.
flatten (bool) β Flatten returned data into dict of lists. Defaults to False.
- Yields:
Generator[Queries, None, None] β Step-by-step paginated result.
- select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: tuple[str, ...] | Literal['*'] = '*', limit: int = 0, offset: int = 0, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[False] = False) list[Row[Any]][source]ο
- select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: tuple[str, ...] | Literal['*'] = '*', limit: int = 0, offset: int = 0, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[True] = True) Row[list[Any]]
- select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: ParsedFn = _null, limit: int = 0, offset: int = 0, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[False] = False) Any
- select(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: str | tuple[str] = '_COLUMN', limit: int = 0, offset: int = 0, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None, flatten: Literal[False] = False) list[Any]
Select data in current table. Bare .select() returns all data.
- Parameters:
where (Condition, optional) β Conditions to used. Defaults to None.
what β (OnlyColumn, ParsedFn, optional): Select what you want. Default to None.
limit (int, optional) β Limit of select. Defaults to 0.
offset (int, optional) β Offset. Defaults to 0
order (Optional[Orders], optional) β Selection order. Defaults to None.
flatten (bool) β Flatten returned data into dict of lists. Defaults to False.
- Returns:
Selected data
- Return type:
Queries
- select_one(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: ParsedFn = _null, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None) Any[source]ο
- select_one(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: tuple[str, ...] | Literal['*'] = '*', order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None) Row[Any]
- select_one(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, what: str | tuple[str] = '_COLUMN', order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None) Any
Select one data
- Parameters:
where (Condition, optional) β Condition to use. Defaults to None.
what β (OnlyColumn, optional): Select what you want. Default to None.
order (Optional[Orders], optional) β Order of selection. Defaults to None.
- Returns:
Selected data
- Return type:
Any
- subquery(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None, columns: tuple[str, ...] | Literal['*'] | str, limit: int = 0) SubQuery[source]ο
Push subquery to current .select() of other table
- update(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, data: dict[str, Any] | None = None, limit: int = 0, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None)[source]ο
Update rows of current table
- Parameters:
data (Data) β New data to update
where (Condition, optional) β Condition dictionary. See Signature about how condition works. Defaults to None.
limit (int, optional) β Limit updates. Defaults to 0.
order (Optional[Orders], optional) β Order of change. Defaults to None.
- Returns:
Rows affected
- Return type:
int
- update_one(where: dict[str, Signature | ParsedFn | SubQuery | Any] | list[tuple[str, Signature | SubQuery | ParsedFn]] | None = None, data: dict[str, Any] | None = None, order: tuple[tuple[str, Literal['asc', 'desc']], ...] | tuple[str, Literal['asc', 'desc']] | None = None) int[source]ο
Update 1 data only
- class luminadb.Unique(column: str)[source]ο
Bases:
ConstraintUnique constraint
- apply(type_: BuilderColumn)[source]ο
Apply this constraint to an column
- luminadb.blob(name: str) BuilderColumn[source]ο
Create a blob column with name
- luminadb.hook(fn_or_name: Callable[[Model], None]) staticmethod[[Callable[[Model], None]], None][source]ο
- luminadb.hook(fn_or_name: str)
Register a hook
- luminadb.integer(name: str) BuilderColumn[source]ο
Create a integer column with name
- luminadb.model(db: Database, type_checking: bool = False)[source]ο
Initiate Model API compatible classes. Requires target to be a dataclass, the app automatically injects dataclass if this isnβt a dataclass.
Use type_checking if you want automatic runtime type checker.
- luminadb.real(name: str) BuilderColumn[source]ο
Create a real column with name
- luminadb.text(name: str) BuilderColumn[source]ο
Create a text column with name