Привет, я пытаюсь сохранить данные, полученные из этого api , в мой столбец Json в моем postgresql, используя запросы sqlalchemy и python.
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:
"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 имеет проблемы с символом* 1060 актеры *