Introducing NeoSQLite — a Python library with an API highly compatible with PyMongo, allowing you to use SQLite almost like MongoDB.
https://github.com/cwt/neosqlite
This project integrates two of my other open-source projects:
-
fts5-icu-tokenizer (GitHub - cwt/fts5-icu-tokenizer: FTS5 ICU Tokenizer for SQLite (mirror) (https://github.com/cwt/fts5-icu-tokenizer)): An ICU-powered tokenizer for SQLite's FTS5, enabling full-text search support for languages worldwide. In NeoSQLite, it powers the $text operator for advanced multilingual search capabilities.
-
quez (GitHub - cwt/quez: Pluggable, compressed in-memory queues and deques for both sync and asyncio applications. (https://github.com/cwt/quez)): A tool that compresses SQLite query results, reducing memory usage by 50% to 80%, which is especially beneficial when working with large datasets.
NeoSQLite is ideal for lightweight, embeddable applications that need MongoDB-like query flexibility with the simplicity and portability of SQLite.
Feel free to check it out and share your feedback.
What you said is the old concept of relational databases. SQLite, years ago, added native JSON and JSON operations such as JSON_EXTRACT, JSON_EACH, JSON_SET, etc., which blurred the line between SQL and NoSQL. However, not many developers utilize it, so I'm trying to bring it to the easiness of PyMongo APIs. If you read the examples and test cases in my repo, you will no longer mention subsets. While it's true, I've already addressed most of them and am still progressing.
Nice job!
What I was wondering about is the possibility to just chuck in any kind of data anywhere, or have gaping holes in some, which SQL isn't suspecting/allowing but NoSQL does.