Внешняя вставка строки SQL не отображается в Django с тем же вызовом функции - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть представление django, которое вызывает внешний веб-сервис, который вставляет строку в мою базу данных django и возвращает идентификатор, который я затем использую для попытки запроса через django. НО django не видит эту запись (работает на django 1.2.5, dev runserver и реальной среде).

Это довольно простой вид:

  1. вызов urllib2-запроса на внешний веб-сервис
  2. получить идентификатор возврата от указанной услуги
  3. item = Comp.objects.get(id = return_id_new_row)
    ERROR cant find objects.
    Я проверяю базу данных напрямую и объект находится там.
  4. Я заменяю get на FILTER, и когда я делаю элемент печати, я вижу набор запросов с объектом, но как только я пытаюсь коснуться его, я получаю ошибку!
  5. Я использую raw sql в django (не затрагивая django). Я могу нормально запросить строку, но не получить ее в свой мир django?!

django как-то кеширует? почему бы не увидеть внешнюю вставку с тем же вызовом? Нужно ли что-нибудь освежить?

Любая помощь приветствуется!

1 Ответ

1 голос
/ 09 декабря 2011

Это звучит как проблема транзакции. Все, что вы делаете внутри своего представления, будет происходить в той же транзакции, поэтому вы увидите изменения. Но внешняя служба будет использовать другую транзакцию, поэтому вы не увидите изменений, пока не подтвердите текущую.

Ознакомьтесь с документацией Django по транзакциям . Возможно, вы захотите использовать ручное управление транзакциями и зафиксировать, прежде чем пытаться получить новый элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...