Home > other >  JSON Parsing with python from Rethink database [Python]
JSON Parsing with python from Rethink database [Python]

Time:11-25

Im trying to retrieve data from a database named RethinkDB, they output JSON when called with r.db("Databasename").table("tablename").insert([{ "id or primary key": line}]).run(), when doing so it outputs [{'id': 'ValueInRowOfid\n'}] and I want to parse that to just the value eg. "ValueInRowOfid". Ive tried with JSON in Python, but I always end up with the typeerror: list indices must be integers or slices, not str, and Ive been told that it is because the Database outputs invalid JSON format. My question is how can a JSON format be invalid (I cant see what is invalid with the output) and also what would be the best way to parse it so that the value "ValueInRowOfid" is left in a Operator eg. Value = ("ValueInRowOfid").

This part imports the modules used and connects to RethinkDB:

import json
from rethinkdb import RethinkDB
r = RethinkDB()
r.connect( "localhost", 28015).repl()

This part is getting the output/value and my trial at parsing it:

getvalue = r.db("Databasename").table("tablename").sample(1).run() # gets a single row/value from the table

print(getvalue) # If I print that, it will show as [{'id': 'ValueInRowOfid\n'}]

dumper = json.dumps(getvalue) # I cant use `json.loads(dumper)` as JSON object must be str. Which the output of the database isnt (The output is a list)

parsevalue = json.loads(dumper) # After `json.dumps(getvalue)` I can now load it, but I cant use the loaded JSON.

print(parsevalue["id"]) # When doing this it now says that the list is a str and it needs to be an integers or slices. Quite frustrating for me as it is opposing it self eg. It first wants str and now it cant use str

print(parsevalue{'id'}) # I also tried to shuffle it around as seen here, but still the same result

I know this is janky and is very hard to comprehend this level of stupidity that I might be on. As I dont know if it is the most simple problem or something that just isnt possible (Which it should or else I cant use my data in the database.)

Thank you for reading this through and not jumping straight into the comments and say that I have to read the JSON documentation, because I have and I havent found a single piece that could help me.

I tried reading the documentation and watching tutorials about JSON and JSON parsing. I also looked for others whom have had the same problems as me and couldnt find.

CodePudding user response:

It looks like it's returning a dictionary ({}) inside a list ([]) of one element.

Try:

getvalue = r.db("Databasename").table("tablename").sample(1).run()

print(getvalue[0]['id'])
  • Related