python pandas:如何控制to_sql自动创建的约束和索引?

时间:2015-04-20 15:43:34

标签: python pandas sqlalchemy dataframe

我使用pandas 0.16和sqlalchemy将数据导出到Microsft SQL Server 2014数据库。 数据帧to_sql方法自动在表上创建某些约束,例如它会创建一个布尔列必须为0或1的约束。

我怀疑这些限制正在减慢导出过程。有没有办法禁用它们,至少是暂时的(即只有在SQL中所有数据都重新启用它们之后)?

此外,这是否记录在任何地方?我无法在大熊猫文档和sqlalchemy中找到任何提及。

1 个答案:

答案 0 :(得分:0)

to_sql将布尔数据写为0和1的原因是因为 SQL Server没有布尔数据类型(参见例如Is there a Boolean data type in Microsoft SQL Server like there is in MySQL?)。
在这种情况下,SQLAlchemy默认情况下会将这些约束添加到列中,如SQLAlchemy文档中所述:http://docs.sqlalchemy.org/en/latest/core/type_basics.html#sqlalchemy.types.Boolean

使用dtype中的to_sql参数覆盖默认类型的可能性(记录为here),您可以指定不创建此约束:

from sqlalchemy.types import Boolean
df.to_sql('name', engine, dtype={'my_bool_col': Boolean(create_constraint=False)})