A lightweight ORM for SQLite
Project description
ORM-SQLite
ORM-SQLite is
- a lightweight ORM for SQLite
- written in Python (3.7+) Standard Library
Quickstart
-
Define a
Pomodoro
modelimport orm_sqlite class Pomodoro(orm_sqlite.Model): id = orm_sqlite.IntegerField(primary_key=True) # auto-increment task = orm_sqlite.StringField() interval = orm_sqlite.IntegerField()
-
Create a
Database
instancedb = orm_sqlite.Database('example.db')
-
Set it as backend of
Pomodoro
model objects, CRUD operations thus can be performed laterPomodoro.objects.backend = db
-
Create a Pomodoro timer record (primary key is auto-increment) and insert it to backend (auto-commited)
pomodoro = Pomodoro({'task': 'do something', 'interval': 25}) pomodoro.save()
which is equivalent to
pomodoro = Pomodoro({'task': 'do something', 'interval': 25}) Pomodoro.objects.add(pomodoro)
-
Retrieve all the records in the backend
Pomodoro.objects.all()
-
Retrieve single record by its primary key and update it (auto-commited)
obj = Pomodoro.objects.get(pk=1) obj['task'] = 'do something else' obj.update()
which is equivalent to
obj = Pomodoro.objects.get(pk=1) obj['task'] = 'do something else' Pomodoro.objects.update(obj)
-
Retrieve single record by its primary key and delete it (auto-commited)
Pomodoro.objects.get(pk=1).delete()
which is equivalent to
obj = Pomodoro.objects.get(pk=1) Pomodoro.objects.remove(obj)
-
Disconnect the backend
Pomodoro.objects.backend.close()
Install ORM-SQLite
$ pip install orm-sqlite
Documentation
Module Database
class orm_sqlite.Database(database[, timeout, detect_types, isolation_level, check_same_thread, factory, cached_statements, uri])
-
connected
Instance attribute: Whether or not the SQLite database is connected.
-
connection
Instance attribute:
sqlite3.Connection
object -
cursor
Instance attribute:
sqlite3.Cursor
object -
connect()
Instance method: Connects the SQLite database if disconnected.
-
close()
Instance method: Disconnects the SQLite database if connected.
-
select(sql, *args, size=None)
Instance method: Returns query results, a list of
sqlite3.Row
objects. -
execute(sql, *args, autocommit=True)
Instance method: Executes an SQL statement and returns rows affected.
-
commit()
Instance method: Commits the staged transaction.
Module StringField
class orm_sqlite.StringField(name=None, default='')
-
name
Instance attribute: Column name. Default:
None
. -
type
Instance attribute: Column type. Default:
TEXT
. -
default
Instance attribute: Column default value. Default:
''
. -
primary_key
Instance attribute: Whether or not it is the primary key. Default:
False
.
Module IntegerField
class orm_sqlite.IntegerField(name=None, default=0, primary_key=False)
-
name
Instance attribute: Column name. Default:
None
. -
type
Instance attribute: Column type. Default:
INTEGER
. -
default
Instance attribute: Column default value. Default:
0
. -
primary_key
Instance attribute: Whether or not it is the primary key. Default:
False
.
Module FloatField
class orm_sqlite.StringField(name=None, default=0.0)
-
name
Instance attribute: Column name. Default:
None
. -
type
Instance attribute: Column type. Default:
REAL
. -
default
Instance attribute: Column default value. Default:
0.0
. -
primary_key
Instance attribute: Whether or not it is the primary key. Default:
False
.
Module Model
class orm_sqlite.Model(*args, **kwargs)
-
__table__
Class attribute: Table.
-
__mappings__
Class attribute: Object Relational Mappings (ORMs).
-
__primary_key__
Class attribute: Primary key.
-
__fields__
Class attribute: Fields except primary key.
-
objects
Class-only attribute:
orm_sqlite.Manager
object used to manage correspondingModel
objects. -
exists()
Class-only method: Whether or not the table exists in the connected database.
-
create()
Class-only method: Create the table if not exists in the connected database.
-
drop()
Class-only method: Drop the table if exists in the connected database,
objects.backend.commit()
needed to confirm. Extremely Dangerous. -
save()
Instance method: Inserts
Model
object to table in the connected database and returns rows affected (1 or -1). -
update()
Instance method: Updates
Model
object from table in the connected database and returns rows affected (1 or -1). Dangerous. -
delete()
Instance method: Deletes
Model
object from table in the connected database and returns rows affected (1 or -1). Dangerous. -
keys()
,values()
,items()
,copy()
, etc. methods inherited from standarddict
.
Practical template for customized model:
import orm_sqlite
class MyModel(orm_sqlite.Model):
id = orm_sqlite.IntegerField(primary_key=True) # auto-increment
# TODO:
Module Manager
class orm_sqlite.Manager()
-
backend
Instance attribute:
orm_sqlite.Database
object serving as backend ofModel
objects. -
all()
Instance method: Returns all
Model
objects from table in the connected database. -
find(filter=None, order_by=None, **extra)
Instance method: Returns all
Model
objects satified the conditions from table in the connected database. -
get(pk)
Instance method: Returns single
Model
object by its primary key from table in the connected database. -
exists(pk)
Instance method: Whether or not a primary key exists in the table from the connected database.
-
aggregate(self, expression, filter=None)
Instance method: Returns the result of an aggregate function performed on table in the connected database.
-
add(obj)
Instance method: Inserts
Model
object to table in the connected database and returns rows affected (1 or -1). -
update(obj)
Instance method: Updates
Model
object from table in the connected database and returns rows affected (1 or -1). Dangerous. -
remove(obj)
Instance method: Deletes
Model
object from table in the connected database and returns rows affected (1 or -1). Dangerous. -
clear()
Instance method: Deletes all
Model
objects from table in the connected database and returns rows affected (1 or -1),backend.commit()
needed to confirm. Extremely Dangerous.
Helper Function
-
root_logger(log_dir='.')
Returns root logger, a
logging.logger
object, logging in main module. -
child_logger(child)
Returns child logger, a
logging.logger
object, logging in auxiliary module.
Related Projects
- Inspired by Django ORM
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
Built Distribution
File details
Details for the file ORM-SQLite-0.0.2.tar.gz
.
File metadata
- Download URL: ORM-SQLite-0.0.2.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.6.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16601b25e8d4504df3c149ef842f953347d148922defa26eb50ae5a882d96354 |
|
MD5 | 5fd33ba6f3e0a74cc5f1ef3751fdb5c1 |
|
BLAKE2b-256 | d1799f9ca7f9db65ca303cf0bc20f7d60ff0afb47c381e02dc8b37b3f328c824 |
File details
Details for the file ORM_SQLite-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: ORM_SQLite-0.0.2-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.6.1 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dffe9ec45fddad3eba141b0699f7fed13e40426577778ec35aa1dc002308adb3 |
|
MD5 | c604a5c155709be52db904b14a138601 |
|
BLAKE2b-256 | be56bba152268a16f25ec97c7b3d58f72be779dd5c35166940a228401b952cd5 |