当我尝试查询PostgreSQL数据库并检索只有一列的值然后将其转换为JSON时,会发生一些奇怪的事情:
latitude = Places.query.with_entities(Places.latitude).all()
longitude = Places.query.with_entities(Places.longitude).all()
user_schema = UserSchema(many=True, strict = True)
print user_schema
output = user_schema.dump(latitude).data
output = json.dumps([dict(r) for r in output], default=alchemyencoder)
print output #[{"latitude": 28.6333}, {"latitude": 28.6333},...]
print type(output) #<type 'str'>
虽然看起来输出的结果是字典列表并且可以迭代来执行操作但是在迭代这个字典的过程中我遇到了错误:
TypeError:字符串索引必须是整数,而不是str
所以,我检查了type(output)
它给了我str
这是为什么?
此外,当我尝试使用
将其转换为float
或int
时
output = float(output)
我收到错误:
ValueError:无法将字符串转换为float:[{“latitude”:28.6333},{“latitude”:28.6333},....]
答案 0 :(得分:1)
如果您不想要字符串,则不应使用json.dumps()
。怎么样:
[x["latitude"] for x in output]
latitude = Places.query.with_entities(Places.latitude).all()
longitude = Places.query.with_entities(Places.longitude).all()
user_schema = UserSchema(many=True, strict = True)
print user_schema
output = user_schema.dump(latitude).data
print([x["latitude"] for x in output])