pandas to_sql with dict raises "can't adapt type 'dict'",有没有办法避免“转储”?
pandas to_sql with dict raises "can't adapt type 'dict'", is there a way to avoid `dumps`?
我正在尝试在 PostgreSQL table(pandas 1.4,Postgres 13)上加载一个简单的 pandas DataFrame:
df = pd.DataFrame([{"index": 1, "properties": {"a": 1, "b": 2}}])
df.to_sql("_test_table", con, if_exists="replace")
然而,我得到 ProgrammingError: can't adapt type 'dict'
。
我在 that applying json.dumps
fixes the issue, and they are right. However, I would like to know if there's a way to leverage PostgreSQL JSON
中看到了类型而不是将信息转换为字符串。
psycopg2
文档提到了 "JSON Adaptation",但是 运行 psycopg2.extensions.register_adapter(dict, psycopg2.extras.Json)
在开始时再次将数据存储为 text
。
the psycopg2 FAQ 上有几次提到 JSON,但我认为它们没有回答我的问题。
这本质上是 Writing JSON column to Postgres using Pandas .to_sql 的副本:解决方案是将 .to_sql
的 dtype
参数与 sqlalchemy.types.JSON
一起使用:
import sqlalchemy
df = pd.DataFrame([{"index": 1, "properties": {"a": 1, "b": 2}}])
df.to_sql("_test_table", dwh_con, if_exists="replace", dtype={"properties": sqlalchemy.types.JSON})
现在一切正常。
我正在尝试在 PostgreSQL table(pandas 1.4,Postgres 13)上加载一个简单的 pandas DataFrame:
df = pd.DataFrame([{"index": 1, "properties": {"a": 1, "b": 2}}])
df.to_sql("_test_table", con, if_exists="replace")
然而,我得到 ProgrammingError: can't adapt type 'dict'
。
我在 json.dumps
fixes the issue, and they are right. However, I would like to know if there's a way to leverage PostgreSQL JSON
中看到了类型而不是将信息转换为字符串。
psycopg2
文档提到了 "JSON Adaptation",但是 运行 psycopg2.extensions.register_adapter(dict, psycopg2.extras.Json)
在开始时再次将数据存储为 text
。
the psycopg2 FAQ 上有几次提到 JSON,但我认为它们没有回答我的问题。
这本质上是 Writing JSON column to Postgres using Pandas .to_sql 的副本:解决方案是将 .to_sql
的 dtype
参数与 sqlalchemy.types.JSON
一起使用:
import sqlalchemy
df = pd.DataFrame([{"index": 1, "properties": {"a": 1, "b": 2}}])
df.to_sql("_test_table", dwh_con, if_exists="replace", dtype={"properties": sqlalchemy.types.JSON})
现在一切正常。