我想让元数据嵌套如下:
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格式来挑选它。