Форум сайта python.su
Oracle database 11.2, Oracle Linux 6, python3.3, django 1.6, cx_Oracle 5.1.2
Проблема начилась с подвисания выполнения метода bulk_create при 10000 записей.
Опытным путём удалось установить, чтоб генерируется отвратительный sql-код.
Пример:
class Author(models.Model): name = models.CharField(max_length=100) mail = models.EmailField(max_length=254)
>>> from app_main.models import * >>> a = Author.objects.using('ORACLE') >>> from django import db >>> reset = db.reset_queries >>> conns = db.connections['ORACLE'] >>> a_list = [Author(name='CONSOLE', mail='ma@na.vd') for _ in range(10)] >>> reset() >>> conns.queries [] >>> a.bulk_create(a_list) [<Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>, <Author: Author object>] >>> conns.queries [{'sql': 'QUERY = \'INSERT INTO "APP_MAIN_AUTHOR" ("NAME", "MAIL") SELECT :arg0, :arg1 FROM DUAL UNION ALL SELECT :arg2, :arg3 FROM DUAL UNION ALL SELECT :arg4, :arg5 FROM DUAL UNION ALL SELECT :arg6, :arg7 FROM DUAL UNION ALL SELECT :arg8, :arg9 FROM DUAL UNION ALL SELECT :arg10, :arg11 FROM DUAL UNION ALL SELECT :arg12, :arg13 FROM DUAL UNION ALL SELECT :arg14, :arg15 FROM DUAL UNION ALL SELECT :arg16, :arg17 FROM DUAL UNION ALL SELECT :arg18, :arg19 FROM DUAL\' - PARAMS = (\'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\', \'CONSOLE\', \'ma@na.vd\')', 'time': '0.158'}]
Отредактировано buddha (Фев. 20, 2014 10:27:21)
Офлайн