Найти - Пользователи
Полная версия: Выполнение SQL кода
Начало » Django » Выполнение SQL кода
1
next-empirik
Необходимо внести множество простых записей в таблицу, с 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
Если вытащить метод execute из блока try, то скрипт вылетает с ошибкой “IntegrityError”. Логично, потому что часть данных уже внесена, и значение в поле name должно являться уникальным. Ну а когда код в блоке try - никаких изменений в базу просто не вносится. Хотя бОльшая часть информации точно в базе не присутствует. Помогите, пожалуйста.
myarik
Добавление данных:
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 – более детально расписано.
next-empirik
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
myarik
@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")
next-empirik
Я не разобрался, если честно, зачем мне нужно было описывать эту функцию с атрибутом. На самом деле, для ускорения выполнения операций, мне помог метод bulk_create().
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB