Ali Raza Bhayani
Ali Raza Bhayani

Reputation: 3145

Django HTSQL TransactionManagementError with sqlite as well as PostgreSQL backend

I am trying to use HTSQL for one of my Django projects. For that I followed the procedure given HERE for furnishing HTSQL/Django requirements. Then I cloned the HTSQL repository for trying the example/demo in it from HERE. The default db used in the demo example is sqlite3. I have tried this demo on both Django v 1.4 and Django v 1.3.1(had to make some tweaks in settings.py for Django v 1.3.1). As instructed in the HTSQL Django-gateway Blog, I wrote the following code in the django project shell:

>>> from htsql_django import produce
>>> query = "/polls_poll{question, total:=sum(polls_choice.votes)}"
>>> for row in produce(query):
>>>    print "%s: %s" % (row.question, row.total)

It throws following error:

TransactionManagementError: This code isn't under transaction management

The whole error trace can be viewed at pastebin

I have also tried this on my own new project but same error.

Upvotes: 2

Views: 285

Answers (1)

Kirill Simonov
Kirill Simonov

Reputation: 256

When you use HTSQL from a Django shell, you have to open a transaction explicitly:

>>> from django.db import transaction
>>> from htsql_django import produce
>>> with transaction.commit_on_success():
...     query = "/polls_poll{question, total:=sum(polls_choice.votes)}"
...     for row in produce(query):
...        print "%s: %s" % (row.question, row.total)

I'm sorry the documentation isn't clear about that. We may change it in a future release.

Upvotes: 4

Related Questions