`table.get(column=value)` option for retrieving things not by their primary key
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia in sqlite_utils/db.py intorno alla riga 1495, dove è definito il metodo esistente Table.get(), e verifica il suo attuale comportamento di ricerca posizionale. Aggiungi il supporto alla ricerca di una colonna tramite keyword, in linea con l’esempio unique-name dell’issue, preservando il comportamento di NotFoundError; esegui quindi i test esistenti del database e aggiungi la copertura per una ricerca riuscita e per una riga mancante.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This came up working on this feature:
I have a table with this schema:
CREATE TABLE [collections] (
[id] INTEGER PRIMARY KEY,
[name] TEXT,
[model] TEXT
);
CREATE UNIQUE INDEX [idx_collections_name]
ON [collections] ([name]);
So the primary key is an integer (because it's going to have a huge number of rows foreign key related to it, and I don't want to store a larger text value thousands of times), but there is a unique constraint on the name - that would be the primary key column if not for all of those foreign keys.
Problem is, fetching the collection by name is actually pretty inconvenient.
Fetch by numeric ID:
try:
table["collections"].get(1)
except NotFoundError:
# It doesn't exist
Fetching by name:
def get_collection(db, collection):
rows = db["collections"].rows_where("name = ?", [collection])
try:
return next(rows)
except StopIteration:
raise NotFoundError("Collection not found: {}".format(collection))
It would be neat if, for columns where we know that we should always get 0 or one result, we could do this instead:
try:
collection = table["collections"].get(name="entries")
except NotFoundError:
# It doesn't exist
The existing .get() method doesn't have any non-positional arguments, so using **kwargs like that should work:
- Lingua principale
- Python
- Stelle
- 2.2k
- Fork
- 172
- Merge medio
- 9m
- PR unite (30g)
- 1
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di simonw/sqlite-utils
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
simonw/sqlite-utils#876 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
simonw/sqlite-utils#872 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
simonw/sqlite-utils#857 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
simonw/sqlite-utils#849 ·
I maintainer di solito rispondono entro 1 giorno
-
bug documentation help wanted
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
simonw/sqlite-utils#493 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di simonw/sqlite-utils
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
gradio-app/gradio#13895 ·
I maintainer di solito rispondono entro 1 giorno
-
build-error
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
spack/spack-packages#6713 ·
I maintainer di solito rispondono entro 1 giorno
-
Use issue templates Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ActivityWatch/activitywatch#1464 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: The ckg tool drops the return type of every decorated Python method in class search results Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
bytedance/trae-agent#483 ·
I maintainer di solito rispondono entro 1 giorno