【发布时间】:2020-11-09 02:53:06
【问题描述】:
我想将 json 数据存储到 postgresql 中,json 看起来像:
{
"Name": "transcordero",
"Direction": "jardin alto 9096",
"Com": "La Florida",
"Region": "Regi\u00f3n Metropolitana de Santiago",
"DirectionGeopy": "Jard\u00edn Alto, Condominio Parque la Portada, La Florida, Provincia de Santiago, Regi\u00f3n Metropolitana de Santiago, 8240000, Chile",
"Categorias": [
{ "Category": "Servicios de transporte, almacenaje y correo " },
{ "Category": "Servicios de transporte, almacenaje y correo " },
{ "Category": "Servicios de transporte, almacenaje y correo " }
],
"ExtCode": [
{ "Code": "1499-461-CM14" },
{ "Code": "711841-19-CM14" },
{ "Code": "1499-370-CM14" }
],
"lat": -33.5235648,
"lon": -70.5613059
}
这是我的模型:
class Bidder(models.Model):
Name_org= models.CharField(max_length=500)
direction_uni = models.CharField(max_length=500)
com_uni = models.CharField(max_length=500)
region_uni = models.CharField(max_length=500)
direction_uni_compl = models.CharField(max_length=500)
categories = ArrayField(models.CharField(max_length=500,default="none"))
ext_code = ArrayField(models.CharField(max_length=100,default="none"))
latitude = models.FloatField()
longitude = models.FloatField()
我尝试使用 ArrayField 将字典列表存储在 Categories 中,但我不断收到错误消息:Error while connecting to PostgreSQL can't adapt type 'dict'
【问题讨论】:
-
没有字典到列表的一对一映射(本质上就是数组字段)-您可以将字典存储为文本,但这会阻止您查询它内容。您可以将字典作为记录存储在单独的表中,并从主记录中引用它。或者你可以想出一个特定的方法来将字典映射到一个列表并添加它。
-
@Grismar 很好,postgres 原生理解 JSON,有一个 JSON 类型。我不确定这将如何与 django 一起使用(可能正在使用),因为它是 postgres 特定类型
-
啊,你当然是对的,但我也希望你使用来自 Django 的
JSONField? docs.djangoproject.com/en/3.1/ref/contrib/postgres/fields -
我用 JSONField 解决了,效果很好
标签: python json postgresql dictionary