Python: TypeError: expected bytes, dict found(尝试嵌套元数据)



我想让元数据嵌套如下:

schema = pa.schema([pa.field('Id', pa.string(), metadata={"pg_dtype": {"dtype": "int[36]", "pkey": "1"}}), 
pa.field('Name', pa.string(), metadata={"pg_dtype": {"dtype": "varchar[20]", "pkey": "1"}})])

但是得到这个错误

TypeError: expected bytes, dict found

我引用这个嵌套字典示例来创建嵌套元数据

people = {'type': {'name': 'John', 'age': '27', 'sex': 'Male'},
'type': {'name': 'Marie', 'age': '22', 'sex': 'Female'}}

metadata应为键值为str(或bytes)的dict。你不能在里面有一个嵌套的字典。您必须将嵌套字典(pg_dtypes)转储为json字符串:

import pyarrow as pa
import json
schema = pa.schema([
pa.field('Id', pa.string(), metadata={"pg_dtype": json.dumps({"dtype": "int[36]", "pkey": "1"})}), 
pa.field('Name', pa.string(), metadata={"pg_type": json.dumps({"dtype": "varchar[20]", "pkey": "1"})})
])
schema.field('Name').metadata
>>> {b'pg_type': b'{"dtype": "varchar[20]", "pkey": "1"}'}

这个工作,但我不确定这是正确的pg格式来挑选它。

最新更新