A performant and lightweight NOSQL Database
Project description
TashoDB
A fast and portable python NoSQL database. Sucessor to KoDB.
Using the DB
To initalize or open a database, it's as straightforward as calling tasho.Database.new
or tasho.Database.open
.
>>> import tasho
>>> database = tasho.Database.new("AnimeDatabase") # Creates a new database.
>>> database = tasho.Database.open("AnimeDatabase") # Opens a database.
Tables can be called through tasho.Database.get_table(table_name)
or through tasho.Database.table.table_name
>>> tbl_anime = database.table.Anime # These all return
>>> tbl_anime = database.get_table("Anime") # the same Table
>>> tbl_anime = database.table['Anime'] # object.
>>> tbl_anime
<TashoDBTable>: Anime | Chunks: 1
Note: Tables are set to auto commit by default. When doing bulk inserts, make sure to set Table.auto_commit
to False
and running Table.commit()
manually afterwards.
Data Storage
>>> tbl_anime.insert('001', {'title': 'Nichijou', 'episodes': 24, 'rating': 99})
'Shows-d545998bc3485346'
This stores the data with 001
as the Document ID. Document IDs can either be String or Int. Since Table.auto_commit
has been set to true, running Table.commit()
is no longer needed.
Retrieval
There are multiple ways of accessing data.
# The document can be accessed through a regular get method
>>> show = tbl_shows.get('001')
>>> show
<TashoDBDocument:001> Origin: Shows
>>> show.dict
{'title': 'Nichijou', 'episodes': 24, 'rating': 99, '_id': '001'}
>>>
# Table.query allows you to pass a callable to filter the data.
>>> tbl_shows.query(lambda id, data: data['rating'] > 50)
[<TashoDBDocument:001> Origin: Shows]
>>>
# Table.query_one works the same as Table.query but stops at the first match.
>>> tbl_shows.query_one(lambda id, data: data['rating'] > 50)
<TashoDBDocument:001> Origin: Shows
Table.get(id)
returns a Document object that contains the data.
Manipulating Data
Manipulating data is as easy as changing the values in the Document object.
>>> show
<TashoDBDocument:001> Origin: Shows
>>> show.dict
{'title': 'Nichijou', 'episodes': 24, 'rating': 99, '_id': '001'}
>>> show.rating = 98
>>> show['title'] = 'Nichibros'
>>> show.save()
'Shows-d545998bc3485346'
>>> show.dict
{'title': 'Nichibros', 'episodes': 24, 'rating': 98, '_id': '001'}
Document deletion can also be done with Document.delete()
.
>>> list(tbl_shows.items())
[('001', {'title': 'Nichijou', 'episodes': 24, 'rating': 98})]
>>> show.delete()
True
>>> list(tbl_shows.items())
[]
Note: Document objects behaves almost the same way as dictionaries. Document.pop
, Document.update
and Document.get
works the same way.
See: test.py for more use cases.
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.