No project description provided
Project description
jsonsh
Disclaimer : This is quite slow for bunch inserts, Taking upto 0.0077 second for 1 file insert when 10000 files were inserted one by one
Note: I did the test on my laptop , which has i5-3337u
Installing
pip install -U jsonsh
What is this !
This is a silly package , that uses pydantic to store data in different json files.
Data Fetched is in pydantic Model , which can be converted to dict using dict().
All examples below have data returned as a Pydantic Model !
Usage
Base Example
import asyncio
from jsonsh import Template,Instance
instance = Instance("Data") #this is your data folder
@instance.register
class Test(Template):
id:int
age:int
name:str
async def main():
idk = Test(id = 10,age = 13,name = "hello")
await idk.save() #this saves the file in your current working directory
asyncio.run(main())
Finding Data
There are no advanced queries yet but you can find by id or particular value
import asyncio
from jsonsh import Template,Instance
instance = Instance("Data")
@instance.register
class Test(Template):
id:int
age:int
name:str
async def main():
data = await Test.find_one(id = 10)
print(data) #prints the data
asyncio.run(main())
Finding Multiple Data
import asyncio
from jsonsh import Template,Instance
instance = Instance("Data")
@instance.register
class Test(Template):
id:int
age:int
name:str
async def main():
data = await Test.find_many(age = 10) #finding all dict with age as 10
print(data) #prints the lists of multiple dicts
asyncio.run(main())
Using Indexing
import asyncio
from jsonsh import Template,Instance
instance = Instance("Data")
@instance.register
class Test(Template):
id:int
age:int
name:str
class Meta:
indexes = ["age","name"]
"""
this makes finding by age and name faster
"""
async def main():
data = await Test.find_many(age = 10) #finding all dict with age as 10
print(data) #prints the lists of multiple dicts
asyncio.run(main())
Deleting files / entries
import asyncio
from jsonsh import Template,Instance
instance = Instance("Data")
@instance.register
class Test(Template):
id:int
age:int
name:str
class Meta:
indexes = ["age","name"]
"""
this makes finding by age and name faster
"""
async def main():
data = await Test.delete_one(age = 10) #deleting a file entry with age as 10
data = await Test.delete_one(id = 10) #deleting a file entry with id as 10
print(data) #prints the lists of multiple dicts
asyncio.run(main())
Simple Caching
from jsonsh import Template,Instance
instance = Instance("Data",cache_state = True,capacity = 100) #this helps you to avoid reading files in finds
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
jsonsh-0.1.3-py3-none-any.whl
(5.9 kB
view hashes)