带有Decimal类型的Pandas Dataframe to_sql

时间:2018-05-29 13:01:04

标签: python pandas sqlite

当数据类型为十进制时,我的Dataframe不会使用“to_sql”方法发送到SQLite数据库:

con = sqlite3.connect("test.db")
df = pd.DataFrame({"a":[decimal.Decimal(0)]})
df.to_sql(name="table", con=con)

错误:

  

sqlite3.InterfaceError:错误绑定参数0 - 可能   不支持的类型。

周围有办法吗?我更喜欢将Decimal(在数据库中)存储为“text”

2 个答案:

答案 0 :(得分:1)

嗨,我遇到了同样的问题,我通过将Dataframe中的Decimal列转换为SQLAlchemy Numeric数据类型来解决了该问题:

public Entity
{
    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name = "type", column = @Column(name = "type1")),
        ...
   })
   private EntityItem restrictionItem;

   @Embedded
   @AttributeOverrides({
        @AttributeOverride(name = "type", column = @Column(name = "type2")),
        ...
   })
   private EntityItem applyItem;
}
@Embeddable
public EntityItem
{
   private _Enum type;
   private String name;
   @Where ?
   private List<Item> list; //?
}

答案 1 :(得分:0)

from sqlalchemy.types import DECIMAL
df.to_sql(name="table", con=con, dtype = {"a" : DECIMAL})

将df发送到sql时,您可以转换为十进制。