我有一个Pandas的数据框架,有几个分类字段。
SQLAlchemy抛出一个异常“的类型不是SQLAlchemy类型”。我尝试过将对象字段转换回字符串,但是得到了同样的错误。
dfx = pd.DataFrame()
for col_name in df.columns:
if(df[col_name].dtype == 'object'):
dfx[col_name] = df[col_name].astype('str').copy()
else:
dfx[col_name] = df[col_name].copy()
print(col_name, dfx[col_name].dtype)
。
dfx.to_sql('results', con=engine, dtype=my_dtypes, if_exists='append', method='multi', index=False)
尽管使用.copy()创建了一个新表,但新的dfx似乎具有相同的分类
另外,顺便提一句,为什么to_sql()生成带有CLOB的CREATE TABLE?
2条答案
按热度按时间5n0oy7gb1#
这里不需要使用copy()函数,也不需要将'object'转换为'str'。
您正在写入Oracle数据库吗?文本数据(包括“object”)的默认输出类型是CLOB。您可以通过指定要使用的dtype来解决此问题。例如:
如果您不向Oracle写入数据,请指定目标数据库--也许其他具有该DBMS经验的人可以为您提供建议。
lvmkulzt2#
@eknumbat是绝对正确的。对于AWS Redshift,你可以做以下操作。注意你可以在这里找到所有的sqlalchemy数据类型(https://docs.sqlalchemy.org/en/14/core/types.html)