Форум сайта python.su
Необходимо внести множество простых записей в таблицу, с orm как-то медленно все выходит. Решил использовать простой SQL. Почитал мануал, написал:
for row in rows: name = row.split('\t')[0].lower() print name try: cursor.execute("INSERT INTO domain_browser_domain (name) VALUES (%s)", [name]) except django.db.utils.IntegrityError: continue
Офлайн
Добавление данных:
from django.db import connection,transaction
cursor = connection.cursor()
query = “”“INSERT INTO domain_browser_domain (name) VALUES (%s)” % name“”"
cursor.execute(query)
transaction.commit()
https://django.readthedocs.org/en/1.4.X/topics/db/transactions.html – более детально расписано.
Отредактировано myarik (Март 18, 2013 16:34:30)
Офлайн
myarikВ этом случае скрипт вылетает с такой ошибкой:
Добавление данных:from django.db import connection,transactioncursor = connection.cursor()query = “”“INSERT INTO domain_browser_domain (name) VALUES (%s)” % name“”"cursor.execute(query)transaction.commit()https://django.readthedocs.org/en/1.4.X/topics/db/transactions.html – более детально расписано.
django.db.transaction.TransactionManagementError: This code isn't under transaction management
Офлайн
@transaction.commit_on_success ... def test_fun(request): ... cursor = connection.cursor() ... query = """ INSERT INTO domain_browser_domain (name) VALUES (%s)""" % name ... cursor.execute(query) ... return HttpResponse("Ok")
Офлайн
Я не разобрался, если честно, зачем мне нужно было описывать эту функцию с атрибутом. На самом деле, для ускорения выполнения операций, мне помог метод bulk_create().
Офлайн