我使用pandas 0.16和sqlalchemy将数据导出到Microsft SQL Server 2014数据库。 数据帧to_sql方法自动在表上创建某些约束,例如它会创建一个布尔列必须为0或1的约束。
我怀疑这些限制正在减慢导出过程。有没有办法禁用它们,至少是暂时的(即只有在SQL中所有数据都重新启用它们之后)?
此外,这是否记录在任何地方?我无法在大熊猫文档和sqlalchemy中找到任何提及。
答案 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)})