尝试使用psycopg2插入时,获取列的类型为jsonb [],但表达式的类型为text []

时间:2019-05-02 13:26:13

标签: python postgresql psycopg2

我正在使用Property 'cat' does not exist on type '"cat" | "dog"'. 在其他表上插入许多表的内容,当我收到其他错误时,我已经将execute_values的适配器设置为dict,但是我没有不知道该如何治疗:

  

psycopg2.ProgrammingError:列“ rules”的类型为jsonb [],但表达式的类型为text []           第1行:... UES(1,'tturxvrtgvvsrqgzsedcoyqujakyepjordrbbjdw',ARRAY ['{“ i ...

处理该问题的唯一方法是类似this issue,但我需要处理每一列...

也许有很多方法可以创建一个新的适配器,但是我无法通过文档来实现。

json

是否有一种自动处理方式,例如register_adapter(dict, Json) execute_values( dest_cursor, f''' INSERT INTO {t} VALUES %s ON CONFLICT DO NOTHING; ''', records, )

1 个答案:

答案 0 :(得分:0)

我找到了可以使用template参数的this issue答案,就像这样:

execute_values(
  dest_cursor,
  f'''
  INSERT INTO {t} VALUES %s ON CONFLICT DO NOTHING;
  ''',
  records,
  template="(%s, %s, %s::jsonb[], %s, %s)" # as many placeholders requested
)