Search code examples
python-3.xtinydb

How can I create a nested value in TinyDB using python3?


An example is this:

from tinydb import TinyDB, Query
from tinydb.operations import add

db = TinyDB('tinydb_practice.json')

db.insert({'Name':'Bella', 'Places':{}})
db.update(add('Places', {{'Country':'USA'}}))

for item in db:
  print(item)

What I want as my result is

{'Name':'Bella', 'Places':{{'Country':'USA'}}}

But I get this error

TypeError: unhashable type: 'dict'

TIA! :)


Solution

  • Places should be a list not a dict (or a set):

    from tinydb import TinyDB, Query
    from tinydb.operations import add
    
    db = TinyDB('tinydb_practice.json')
    
    db.insert({'Name':'Bella', 'Places':[]})  # <- replace {} by []
    db.update(add('Places', [{'Country':'USA'}]))  # <- replace outer {} by []
    
    for item in db:
        print(item)
    

    Output:

    {'Name': 'Bella', 'Places': [{'Country': 'USA'}]}