{"id":17979142,"url":"https://github.com/thelicato/ya-pickledb","last_synced_at":"2025-08-12T18:17:59.529Z","repository":{"id":217677191,"uuid":"744586809","full_name":"thelicato/ya-pickledb","owner":"thelicato","description":"Yet another PickleDB (thread-safe!)","archived":false,"fork":false,"pushed_at":"2024-01-18T11:06:06.000Z","size":292,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-12T11:05:21.916Z","etag":null,"topics":["db","json","kvstore","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thelicato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-17T15:51:28.000Z","updated_at":"2025-03-20T14:50:00.000Z","dependencies_parsed_at":"2024-01-17T22:11:49.779Z","dependency_job_id":"cad15391-cbfd-490f-89e7-f8b9ac850e1a","html_url":"https://github.com/thelicato/ya-pickledb","commit_stats":null,"previous_names":["thelicato/ya-pickledb"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/thelicato/ya-pickledb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fya-pickledb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fya-pickledb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fya-pickledb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fya-pickledb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thelicato","download_url":"https://codeload.github.com/thelicato/ya-pickledb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fya-pickledb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270111022,"owners_count":24529193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["db","json","kvstore","python"],"created_at":"2024-10-29T17:36:36.397Z","updated_at":"2025-08-12T18:17:58.935Z","avatar_url":"https://github.com/thelicato.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\t\u003cimg src=\"https://github.com/thelicato/ya-pickledb/blob/main/logo.png?raw=true\" width=\"400\"\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eYet another PickleDB (thread-safe!)\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#-installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#-license\"\u003eLicense\u003c/a\u003e •\n\u003c/p\u003e\n\n---\n\n``ya-pickledb`` (Yet Another PickleDB) is a an open-source key-value store for *Python* using the ``msgpack`` module. It is heavily inspired by [pickledb](https://github.com/patx/pickledb), but also provides new features (like thread-safety using ``safer``). \n\nThe new feature additions are inspired by [elara](https://github.com/saurabh0719/elara); but since it cannot serialize complex data structure to filesystem I decided to take the best of both worlds and create a new package.\n\n## ⚡ Features\n\n- Manipulate different data structures (strings, lists, dictionaries and so on)\n- Fast and flexible\n- Thread-safe!\n- Choose between manual and auto commits\n- Cache simple data structures\n\n## 📚 Usage\n\n```python\nimport ya_pickledb\n\ndb = ya_pickledb.load('kvstore.db', True)\n\ndb.set('foo', 'bar')\nvalue = db.get('foo')\n\nprint(value)\n```\n\nThis is the full list of all functions available to the user:\n- ``commit()``: manually save the data to file storage.\n- ``set(key, value, max_age=None)``: set the value of a key.\n- ``get(key)``: get the value of a key.\n- ``getall()``: get a list of all keys.\n- ``exists(key)``: get wheter a key exists or not.\n- ``rem(key)``: remove a key.\n- ``totalkeys()``: get a total number of keys inside the db.\n- ``lcreate(key)``: create a list.\n- ``lpush(key, value)``: add a value to a list.\n- ``lgetall(key)``: return all values in a list.\n- ``lget(key, value, pos)``: return the value in a specific position of a list.\n- ``lremlist(key)``: remove a list.\n- ``lremvalue(key, value)``: remove a value from a list.\n- ``lpop(key, pos)``: remove ne value in a list.\n- ``llen(key)``: return the length of a list.\n- ``lexists(key, value)``: determine if a value exists in a list.\n- ``hcreate(key)``: create a dict.\n- ``hset(key, dict_key, value)``: add a key-value pair to a dict.\n- ``hget(key, dict_key)``: get the value for a key in a dict.\n- ``hgetall(key)``: get all the key-value pairs from a dict.\n- ``hrem(key)``: remove a dict.\n- ``hpop(key, dict_key)``: remove one key-value pair fro a dict.\n- ``hkeys(key)``: get all the keys for a dict.\n- ``hvals(key)``: get all the values for a dict.\n- ``hexists(key, dict_key)``: determine if a key exists in a dict.\n\nAll the functions should return ``None`` if something goes wrong (e.g. the ``key`` accessed is missing). Errors are raised when the input type is wrong (e.g. setting a ``bool`` as key).\n\n## 🚀 Installation\n\nRun the following command to install the latest version:\n\n```\npip install ya_pickledb\n```\n\n\n## 🪪 License\n\n*ya_pickledb* is made with 🖤 by the [thelicato](https://thelicato.io) and released under the [MIT LICENSE](https://github.com/thelicato/ya-pickledb/blob/main/LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthelicato%2Fya-pickledb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthelicato%2Fya-pickledb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthelicato%2Fya-pickledb/lists"}