嗨,我正在尝试使用 sqlalchemy 和 python 请求将从这个api获得的数据保存到我的 postgresql 中的 Json 列中。
r = requests.get(api)
content = r.content
data = json.loads(content)
crawl_item = {}
crawl_item = session.query(CrawlItem).filter_by(site_id=3, href=list_id).first()
crawl_item.description = data['ad']['body']
crawl_item.meta_data = {}
crawl_item.meta_data["ward"] = data['ad_params']['ward']['value']
try:
session.commit()
except:
session.rollback()
raise
finally:
ret_id = crawl_item.id
session.close()
我的模型:
class CrawlItem(Base):
...
description = Column(Text)
meta_data = Column(postgresql.JSON)
我想获得病房的价值:
"ward": {
"id": "ward",
"value": "Thị trấn Trạm Trôi",
"label": " Phường, thị xã, thị trấn"
}
我已经将我的 postgresql 编码为 utf-8,因此不是 json 列 ( description = Column(Text)
) 的其他字段通常保存 utf-8 字符,只有我的 json 列数据不被解码:
{
"ward":"Th\u1ecb tr\u1ea5n Tr\u1ea1m Tr\u00f4i"
}
描述栏:
元数据列:
我曾尝试使用:
crawl_item.meta_data["ward"] = data['ad_params']['ward']['value'].decode('utf-8')
但病房数据没有保存
我不知道出了什么问题,希望有人可以帮助我
编辑:
我用 psql 检查了数据并得到了这些:
描述栏:
元数据列:
似乎只有 meta_data json 列的字符有问题