用dicts存储dict

2024-09-27 23:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将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将dict列表存储在Categories中,但我不断得到错误:Error while connecting to PostgreSQL can't adapt type 'dict'


Tags: modelscodedelengthmaxunicharfieldcategory
1条回答
网友
1楼 · 发布于 2024-09-27 23:20:04

在我的模型中,使用CategoriesExtCode的JSONfield解决了这个问题,如下所示:

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 = models.JSONField(null=True)
    ext_code = models.JSONField(null=True)
    latitude = models.FloatField()
    longitude = models.FloatField()

我还必须修改查询:

postgres_insert_query = """ INSERT INTO colection_bidder (Name_org, direction_uni, com_uni, region_uni, direction_uni_compl, categories, ext_code, latitude, longitude) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)"""
record_to_insert = (i['Name'], i['Direction'], i['Com'], i['Region'], i['DirectionGeopy'], json.dumps(i['Categories'], separators=(',',':')), json.dumps(i['ext_code'], separators=(',',':')), i['lat'], i['lon'])

相关问题 更多 >

    热门问题