django-pyodbc bulk_create 坏了

Posted

技术标签:

【中文标题】django-pyodbc bulk_create 坏了【英文标题】:django-pyodbc bulk_create is broken 【发布时间】:2016-12-07 19:30:29 【问题描述】:

当使用django-pyodbc 后端调用bulk_create() 时,将为批处理中的每个对象运行一个插入语句。行为应该是每批运行一个插入语句。

这是一个错误,还是有办法改变这种行为?

版本:

django==1.7 pyodbc==3.0.10 django-pyodbc==1.0.1 FreeTDS v1.00.21 unixODBC v2.3.4

【问题讨论】:

您使用的是哪个django-pyodbc?那里有很多。我发现维护最积极和功能最完整的是django-pyodbc-azure,它适用于 SQL Server Azure。我将它与本地 SQL Server 2008 到 2014 一起使用。 【参考方案1】:

我打赌您使用的django-pyodbc 版本不支持批量插入。我建议使用django-pyodbc-azure,您可以使用它进行安装:

pip install django-pyodbc-azure<1.8

django-pyodbc-azure 将其版本号与 Django 匹配,因此您需要 1.7 分支的最新/最佳版本(因此,

应该支持bulk_insert():

https://github.com/michiya/django-pyodbc-azure/blob/adc5d88a9928cecc0e9d33aacca301e0084ff824/sql_server/pyodbc/features.py#L15

我还建议升级到 Django 1.8(长期支持)或 1.10(当前版本),因为不再为 1.7 发布安全补丁和错误修复。祝你好运!

【讨论】:

谢谢,我现在正在测试这个。将在几分钟后再次发布。 django-pyodbc-azure 确实支持bulk_insert 并且也通过了我的其他测试。似乎比django-pyodbc的另一个分支工作得更好

以上是关于django-pyodbc bulk_create 坏了的主要内容,如果未能解决你的问题,请参考以下文章

django-pyodbc 并调用存储过程

linux上的Django-pyodbc SQL Server/freetds服务器连接问题

从 django bulk_create 中选择/查询对象?

如何检查唯一的 bulk_create

Django bulk_create 忽略导致 IntegrityError 的行?

91.一次性处理多条数据的方法:bulk_create,update,delete