tinydb的基类
tinydb-baseClass的Python项目详细描述
丁腈基
我用TinyDB。。。很多时候,我似乎在一遍又一遍地写同样的函数。这个小项目背后的想法是为开发人员提供一种方法,在不需要构建基类的情况下,轻松地围绕tinydb创建数据模型。在
如何安装
最简单的方法是通过依赖关系管理器pip install tinyDbBase
进行安装,或者如果使用pipenv install tinyDbBase
进行安装。在
我怎么用这个东西
工厂
这允许您与Tinydb以及同一对象中的根对象和表进行交互。在
fromtinydb_baseimportFactorydb=Factory('myData.json','myTable')db.db# equliervent to `TinyDB`.db.tbl# equliervent to `TinyDB.Table`.db.close()# closes the database file.
数据库
其思想是导入基类,然后派生到自己的类中。其思想是,您可以通过创建一个类来创建您的数据层,该类将解决所需的问题,并且可以正常工作。在
^{pr2}$这将使访问基类时,可以添加自己的自定义函数。将在项目中使用文件的名称空间,但您可以在实例中轻松覆盖此名称空间。另一个很酷的特性是所需的键这是必须存在于每一行中的键,它也可以更改。在
方法
Method Name | attr | Description |
---|---|---|
create | dict | this adds a new row to the database. |
createMultiple | list of dicts | this added multiple rows |
readAll | returns a list obj | |
readById | id | this gets a row by the id |
removeById | id | this removes a row by id |
clear | this removes all data from the table | |
exists | tag, value | checks if a a value with header exists |
now_ts | returns a unix time as a float |
数据库basesercure
它的工作方式与DatabaseBase
完全相同,但是通过提供一个salt,您可以使用Fernet加密,建议您定义自己的salt
fromtinydb_base.cryptographyimportDatabaseBaseSercureclassDiary(DatabaseBaseSercure):def__init__(self,file='ds.json',table=__name__,requiredKeys='title,content',salt='salt'):super().__init__(file=file,table=table,requiredKeys=requiredKeys,salt=salt)obj=Diary(salt='thisisasalt')^{tb2}$
用户
很多系统需要使用用户组件,这是一个
简单的类,允许创建用户,它是一个嵌入的类
来自DatabaseBase
,但有属于用户的speail方法
fromtinydb_baseimportUserusrTable=User()# will work with a user as a table,>>>usrTable.makeUser('me','mypassword')1>>>usrTable.authUser('me','!mypassword')False>>>usrTable.authUser('me','mypassword')True
Method Name | attr | Description |
---|---|---|
makeUser | username, password | creates a user in the system |
testUser | userId, password | tests a password angest a user id |
authUser | username, password | test a username and password |
获取集
这是一个非常简单的接口,它基于标记设置和获取值。这可以用于设置之类的事情。如果标记dose不存在,类将引发tinydb_base.exceptions.RowNotFound_Exception
fromtinydb_base.getSetimportGetSetclassSettings(GetSet):def__init__(self,file:str='ds.json',table:str=__name__):super().__init__()Settings().set('foo','bar')Settings().get('foo')
解冻键
如果需要在数据文件中包含密钥,可以确保它们存在。在
fromtinydb_base.getSetimportGetSetclassSettings(GetSet):def__init__(self,salt,pw,file='ds.json',table=__name__):super().__init__(salt,pw,file=file,table=table)self.defaultRows({'foo':'bar'})
NEW超时设置
get set的这个新特性允许用户将值设置为timeout并从数据库中删除,这是通过set方法传递的参数来管理的。在
fromtinydb_base.getSetimportGetSet,futureTimeStampclassSettings(GetSet):def__init__(self,file:str='ds.json',table:str=__name__):super().__init__()obj=Settings().set('api-key','thisisaapikey, futureTimeStamp(hour=1))
上面的代码将向数据库中添加一行,该行只在数据库中保留一行小时检查是在每次电话会议的基础上完成的。在
GetSetSercure
工作原理与GetSet
相同,但标记和值都已加密。在
fromtinydb_base.getSetSercureimportGetSetSercureclassPasswordCode(GetSetSercure):def__init__(self,salt,pw,file='ds.json',table=__name__):super().__init__(salt,pw,file=file,table=table)obj=PasswordCode('salty','notasercurepassword').set('foo','bar')
将表导出到文件
这些函数将文档列表导出为JSON或Ymal,这些函数采用documents
的列表和导出路径。这将创建一个包含所有数据和人类可读的时间-日期戳的文件。在
fromtinydb_base.exporterimportjsonExportfromtinydb_base.exporterimportymalExportfromtinydb_baseimportDatabaseBasea=DatabaseBase()forindexinrange(0,10):a.create({'title':index})b=jsonExport(a.readAll(),'jsonData.json')b=ymalExport(a.readAll(),'ymalData.ymal')
- 项目
标签: