Package: key-value-db
Light weight package to quickly and easily manage, load, update and save
key-value type databaseThe sample use cases of this package is loading configuration file,
language file, preference setting in an application. More use cases can
be seenhere.The package does not do any Input and Output operation as there are
several way to read and write to file and the methods has their strength
and weakness therefore the developer has to find the efficient way to
load and save locally.Table of contentInstallationExampleLegendsAPICreating/loading a documentInserting dataFinding dataGet KeyValue ObjectGet Like KeyValue ObjectGetGet LikeUpdating dataSetSet KeyValue ObjectInserting dataRemoving dataSize, Clear, isEmptySizeClearisEmptySaving collectionIterating collectionHow it worksContributingSupportLicenseInstallationInstall the package from the Python package index or download the zip
and .egg file fromreleases.pipinstallkey_value_dbExampleThe following example load, update, read and remove a simple key value
objectfromkey_value_dbimportKeyValueDB,KeyValueObject#initialize the key-valuekey_value_db=KeyValueDB("Greet=Hello World,Project=KeyValueDB",True,'=',',',False)#get an objectprint(key_value_db.get("Greet"))#remove an objectkey_value_db.remove("Greet")#add an objectkey_value_db.add("What","i don't know what to write here")#print all the objectsforkvoinkey_value_db:print(kvo)Legendskvp  - Key Value Pair
kvdb - Key value Database
pss  - Possibly
kvo  - Key Value ObjectAPIOnly string type is used as the key and value of the kvo. A kvo can be
used to replace or set the value for a key.Creating/loading a documentYou can use the package to update and create an existing key value
database. This library does not read the database from a file which
means you have to find a way to read a string from the file.Create a new keyValueDB. The default seperator between the key and value
is=and the delimeter between the kvp is\n(newline).key_value_db=KeyValueDB()To load existing KeyValueDBkey_value_db=KeyValueDB("Greet=Hello World,Project=KeyValueDB",#pss read string from fileTrue,#case sensitive is true'=',#the seperator from key and value',',#the delimeter for the key-value-pairFalse#error tolerance if true no exception is thrown)Inserting DataThe only accepted type that can be inserted is a validKeyValueObjectandString. The methodaddcan be used to add
a new kvp into the object.Add a kvp with it key and valuekey_value_db.add("Greet","Hello World")Add a kvp using theKeyValueObjectclass.key_value_object=KeyValueObject("Greet","Hello World")key_value_db.add(keyValueObject)Finding DataThere are several way to find and get a value from the kvdb object. The
value or the KeyValueObject can be gotten using the methods belowGet KeyValue ObjectYou can get the kvo using either the key or index. If the corresponding
kvo is not found, an empty kvo is added to the db and then returned but
not in the case when requested with the integer index. If a fallback kvo
is sent as second parameter then when the request kvo is not found the
fallback second parameter is added to the kvdb and then returned.Get the kvo using it integer indexkey_value_db.get_key_value_object(0)#<KeyValueObject@6034722440246165772:Key=Greet,Value=Hello World>Get the kvo using it keykey_value_db.get_key_value_object("Greet")#<KeyValueObject@6034722440246165772:Key=Greet,Value=Hello World>Get the kvo using it key with fallback kvokey_value_object=KeyValueObject("Name","Adewale Azeez")key_value_db.get_key_value_object("Name",key_value_object)#<KeyValueObject@6034722440246165772:Key=Name,Value=Adewale Azeez>Get Like KeyValue ObjectGet a kvo by checking the kvdb for the kvo object that contains a part
of the key. If a fallback kvo is sent as second parameter then when the
request kvo is not found the fallback second parameter is added to the
kvdb and then returned.Get a similar kvo using it key partkey_value_db.get_like_key_value_object("eet")#<KeyValueObject@6034722440246165772:Key=Greet,Value=Hello World>Get a similar kvo using it key part with fallback kvokey_value_object=KeyValueObject("Name","Adewale Azeez")key_value_db.get_like_key_value_object("Nam",key_value_object)#<KeyValueObject@6034722440246165772:Key=Name,Value=Adewale Azeez>GetYou can get a kvdb value using either the key or index. If the
corresponding value is not found, an empty string is added to the db and
then returned but not in the case when requested with the integer index.If a fallback kvo is sent as second parameter then when the request key
is not found the fallback second parameter is added to the kvdb and then
value is returned. If a string value is sent as the second value it is
returned if the key is not found in the kvdb.Get a value using it integer indexkey_value_db.get(0)#"Hello World"Get the value using it keykey_value_db.get("Greet")#"Hello World"Get the kvo using it key with fallback valuekey_value_db.get("Licence","The MIT Licence")#"The MIT Licence"Get the kvo using it key with fallback kvokey_value_object=KeyValueObject("Licence","The MIT Licence")key_value_db.get("Name",key_value_object)#"The MIT Licence"Get LikeGet a value by checking the kvdb for the kvo object that contains a part
of the key.If a fallback kvo is sent as second parameter then when the request key
is not found the fallback second parameter is added to the kvdb and then
value is returned.Get a value using it key partkey_value_db.get_like("eet")#"Hello World"Get a value using it key part with fallback kvokey_value_object=KeyValueObject("Licence","The MIT Licence")key_value_db.get_like("Li",key_value_object)#"The MIT Licence"Updating DataThere are various way to update a kvp in the kvdb, the value can be
changed directly or set to a new KeyValueObject. If you try to set a kvo
that does not exist in the kvdb using it key, it is added to the kvdb.SetThesetmethod is used to change the value of the kvo using the
index of the kvo or a kvo key.Set a kvo value using it indexkey_value_db.set(0,"Hello World from thecarisma")#<KeyValueObject@603472244355765772:Key=Greet,Value=Hello World from thecarisma>Set a kvo value using it keykey_value_db.set("Greet","Hello World from thecarisma")#<KeyValueObject@603472244355765772:Key=Greet,Value=Hello World from thecarisma>Set KeyValue ObjectCompletly change a KeyValueObject in the kvdb using either it index or
it key. The kvo is completly replaced which means unique fields like the
hashcode of the kvo changes. When the kvo is set using it key if the
corresponding kvo does not exist it is added into the kvdb. Note that
this method completly changes the kvo so it can be used to replace a
kvo.Set a kvo using it indexkey_value_object=KeyValueObject("Licence","The MIT Licence")key_value_db.set_keyValueObject(0,key_value_object)#<KeyValueObject@6034545687687898767:Key=Licence,Value=The MIT Licence>Set a kvo value using it keykey_value_object=KeyValueObject("Licence","The MIT Licence")key_value_db.set_key_value_object("Greet",key_value_object)#<KeyValueObject@6034545687687898767:Key=Licence,Value=The MIT Licence>Inserting DataA new kvp can be inserted by invoking theaddmethod. The kvp can be
added using it key and value or by directly adding the KeyValueObject to
the kvdb.Add a new kvp using the key and valuekey_value_db.add("Key","This is the value")Add a new kvp using a new KeyValueObjectkey_value_object=KeyValueObject("Key","This is the value")key_value_db.add(key_value_object)Removing DataRemove a kvp completely from the kvdb using either it key of the integer
index. The kvp that was removed is returned from the method. If the
index does not exist out of bound error occur and if a kvo with the key
is not present nothing is done but an empty kvo is returned.Remove a kvp using integer indexkey_value_db.remove(0)#removes the first kvp in the kvdb#<KeyValueObject@6034722440246165772:Key=Greet,Value=Hello World>Remove a kvp using it keykey_value_db.remove("Greet")#removes the first kvp in the kvdb#<KeyValueObject@6034722440246165772:Key=Greet,Value=Hello World>Size, Clear, isEmptySizeGet the size of the kvo in the kvdb.key_value_db.size()#4ClearRemove all the elements and kvo from the kvdbkey_value_db.clear()#key_value_db.size() = 0isEmptyCheck whether the kvdb contains any kvo in it.key_value_db.is_empty();#falseSaving collectionThe kvp collection kvdb can be inspected as a string using the__str__method. The returned value can be saved locally by writing
to a persistent storage or to a plain text file. The output of the__str__method is determined by the kvos, the seperator and the
delimeter.key_value_db.__str__();#"Greet=Hello World,Project=KeyValueDB,Project=KeyValueDB,Licence=The MIT Licence"Iterating collectionThe KeyValueDB object can be iterated natively using thefor..inloop expression.forkvoinkey_value_db:#operate on the KeyValueObjectHow it worksKeyValueObject class contains the key and value field and the fields
setter and getter. The KeyValueObject is the main internal type used in
the KeyValueDB class.In KeyValueDB the key value pair is stored in[KeyValueObject...]type, all search, updating and removal is done on thekeyValueObjectsin the class. The string sent as first parameter if
parsed into valid key value using the separator and delimiter fields.
The__str__method also parse thekeyValueObjectscontent into a
valid string with regards to the separator and delimeter.ContributingBefore you begin contribution please read the contribution guide atCONTRIBUTING GUIDEYou can open issue or file a request that only address problems in this
implementation on this repo, if the issue address the concepts of the
package then create an issue or rfchereSupportYou can support some of this community as they make big impact in the
developement of people to get started with software engineering.https://www.patreon.com/devcareerLicenseMIT License Copyright (c) 2019 Adewale Azeez - keyvaluedb