AnswerDotAI / AnswerDotAI/sqlite-minutils
Foreign keys are not compatible with @cache
- Lingua principale
- Python
- Stelle
- 17
- Fork
- 9
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
```python
schema = {'department': {'id': int, 'name': str},
'students': {'columns': {'id': int, 'name': str, 'department_id': str},
'foreign_keys': ['department_id']},
'professors': {'columns': {'id': int, 'name': str, 'department_id': str},
'foreign_keys': ['department_id']},
'classes': {'columns': {'id': int, 'name': str, 'department_id': str},
'foreign_keys': ['department_id']}}
db = database(DB)
for t in db.table_names(): db.t[t].drop()
for t,meta in schema.items():
cs = meta.get('columns', meta)
fks = meta.get('foreign_keys')
db.create_table(t, cs, pk='id', foreign_keys=fks)
```
We get the error
```
TypeError Traceback (most recent call last)
Cell In[3], line 16
14 if isinstance(fks, L): fks = list(fks)
15 print(fks)
---> 16 db.create_table(t, cs, pk='id', foreign_keys=fks)
File /opt/miniconda3/lib/python3.12/site-packages/sqlite_minutils/db.py:976, in Database.create_table(self, name, columns, pk, foreign_keys, column_order, not_null, defaults, hash_id, hash_id_columns, extracts, if_not_exists, replace, ignore, transform, strict)
974 self.execute(sql)
975 foreign_keys = self.resolve_foreign_keys(name, foreign_keys) if foreign_keys is not None else None
--> 976 created_table = self.table(
977 name,
978 pk=pk,
979 foreign_keys=foreign_keys,
980 column_order=column_order,
981 not_null=not_null,
982 defaults=defaults,
983 hash_id=hash_id,
984 hash_id_columns=hash_id_columns,
985 )
986 return cast(Table, created_table)
TypeError: unhashable type: 'list'
```
because self.table is @cache decorated and foreign keys are a list
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia in sqlite_minutils/db.py, in Database.create_table e nella chiamata self.table mostrata nel traceback; riproduci l'esempio passando foreign_keys come lista e ispeziona gli argomenti memorizzati nella cache. Il lavoro è concluso quando la creazione delle tabelle accetta foreign_keys sotto forma di lista senza generare il TypeError segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- database
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100