python pandas:仅将数据帧的结构(无行)导出到 SQL

Pyt*_*ous 3 python sqlalchemy pandas

我正在使用 Pandas 0.16 和 sqlalchemy。是否可以仅将数据帧的结构(即列名和数据类型,而不是行)导出到 SQL?

我设法做到的最接近的是仅导出第一行:

df.ix[[0],:].to_sql( tablename, myconnection )
Run Code Online (Sandbox Code Playgroud)

然后我必须做一个截断表。但是,to_csv 和 to_sql 方法之间存在不一致:to_csv 将布尔字段写为字符串 'TRUE' 或 'FALSE' ,而 to_sql 将它们写为 0 或 1。这意味着导入使用 dataframe.to_csv 创建的文件更复杂比应该的。

如果我跑

df.ix[[],:].to_sql( tablename, myconnection )
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为所有列都导出为文本。

jor*_*ris 5

您可以使用该get_schema功能:

from pandas.io.sql import get_schema

engine = ...
df = ..
get_schema(df, 'table_name', con=engine)
Run Code Online (Sandbox Code Playgroud)

这将为您提供原本以字符串形式创建的架构,您可以使用它执行 engine.execute

此外,to_sql将您的布​​尔数据写为 0 和 1 的原因是因为SQL Server 没有布尔数据类型(参见例如Microsoft SQL Server 中是否有一个布尔数据类型,就像在 MySQL 中一样?