Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: registrovany123 21. 05. 2024, 14:40:59

Název: Jednoduchá NoSQL databáze pro Python
Přispěvatel: registrovany123 21. 05. 2024, 14:40:59
Potřebuju často v Pythonu ukládat někam data, třeba v rámci data mining atp. V Pythonu jsem používal SQLite, SQAlchemy, zkoušel jsem TinyDB a obyčejné soubory.

Potřebuju tedy ukládat data ideálně jako dictionaries, třeba http response stažené z nějakého API.


- SQLite - je roztomilá databáze, ale bez použití SQAlchemy mi přijde práce s tím docela opruz

- SQLAlchemy - tohle je docela dobrý, ale pořád vidím jako nevýhodu to, že se musím párat s vytvářením entitních tříd, já potřebuju prostě jen uložit dictionaries, nechce se mi štráchat s vytvářením sloupce pro každý field v jsonu

- TinyDB - Vychvalovaná db, dají se v tom dělat queries nad těmi uloženými dictionaries, ale za mě to je nepoužitelné, je to strašlivě ale strašlivě pomalé, neumím si představit co bych v tom ukládal že by mi ta pomalost nevadila

Takže co používám já je Pickle a soubory v kombinaci s LockFile knihovnou (schválně neřeknu k čemu potřebujete lockfile).
Tohle se mi nejvíc osvědčilo, je to doclea rychlé a jednoduché. Nevýhoda je, že se všechno musí načíst nejprve do paměti.

No takže co by se mi líbilo, je něco jako je TinyDB, tzn. uložím si prostě dictionary, a můžu potom dělat i queries. Jenže jak říkám, TinyDB je pro ty queries nepoužitelně pomalá, to už si raději načtu všechno do memory a projedu si to ve foreach abych našel co potřebuju.

Na mojem os. počítači dobrý, ale někde v cloudu kde memory je max třeba 2GB už to má slabá místa.

Nemáte nějaký tip? A ať to nemusí ideálně běžet v Dockeru, prostě keep it simple. Něco jako je SQLite, v Céčku psané, ale aby to bylo jako Document DB, tzn. key value pairs, jako value dictionary a umožňovalo to dělat queries.
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: mikrom 21. 05. 2024, 15:14:34
..
- SQLite - je roztomilá databáze
..
nechce se mi štráchat s vytvářením sloupce pro každý field v jsonu
..
a preco nemozes cely JSON ulozit do jedneho textoveho stlpca ?
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: Tomáš Rollo 21. 05. 2024, 16:52:08
Taky me napadly JSON funkce v SQLite, treba by tim sly delat i querries nad obsahy tech dictionaries ulozenych jako JSONB v jednom sloupci? Viz https://www.sqlite.org/json1.html

Alternativne treba napr. Mongita ktera "je k MongoDB totez co SQLite k SQL serveru"? Viz https://github.com/scottrogowski/mongita
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: androfx 21. 05. 2024, 17:00:29
Něco jako je SQLite, v Céčku psané, ale aby to bylo jako Document DB, tzn. key value pairs, jako value dictionary a umožňovalo to dělat queries.

https://pypi.org/project/sqlitedict/
jen ty queries to neumi, ale rychle se s tim delaji zazraky.
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: mikrom 21. 05. 2024, 22:42:53
https://pypi.org/project/sqlitedict/
to je zaujimave
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: registrovany123 22. 05. 2024, 11:39:57
Něco jako je SQLite, v Céčku psané, ale aby to bylo jako Document DB, tzn. key value pairs, jako value dictionary a umožňovalo to dělat queries.

https://pypi.org/project/sqlitedict/
jen ty queries to neumi, ale rychle se s tim delaji zazraky.


To je sice zajímavá knihovna, ale vzhledem k tomu, že tam nevidím queries, nevidím point v čem je to lepší než použít pickle.

Tím že tam nejsou queries tak se to asi načítá do paměti, plus navíc tam vidím používání magicků, jako třeba že len(db) vrací počet řádků v databázi, to ten vývojář dělá nějakou jógu s kódem, od toho se držím pryč.

Nakolik to vypadá kdoví jak, nepřijde mi, že to něco zajímavého nového přináší.

Takže zůstávám hezky u Pickle, serializuju dict do souboru.
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: registrovany123 22. 05. 2024, 11:42:55
Taky me napadly JSON funkce v SQLite, treba by tim sly delat i querries nad obsahy tech dictionaries ulozenych jako JSONB v jednom sloupci? Viz https://www.sqlite.org/json1.html

Alternativne treba napr. Mongita ktera "je k MongoDB totez co SQLite k SQL serveru"? Viz https://github.com/scottrogowski/mongita

Tohle by stálo za zkoušku, nevýhodu vidím v tom, že to asi nebude podporovat SQLAlchemy, a v minulosti se mi vypmstilo s SQLite pracovat ručně, protože tam jsou typické low level db-specific "dojebávky".
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: Tomáš Rollo 22. 05. 2024, 15:32:28
Treba jo? https://docs.sqlalchemy.org/en/20/changelog/migration_13.html#change-3850 (https://docs.sqlalchemy.org/en/20/changelog/migration_13.html#change-3850)
Název: Re:Jednoduchá NoSQL databáze pro Python
Přispěvatel: Honza1324 23. 05. 2024, 07:14:42
musíš nainstalovat, ale nejjednodužší na toto bych řekl že je MongoDB. Sežere co jí dás a je možné jednoduše udělat vyhledávání.