我正在尝试将HTSQL用于我的一个Django项目。为此,我按照HERE给出的程序来提供HTSQL / Django要求。然后我克隆了HTSQL存储库,用于在HERE中尝试示例/ demo。演示示例中使用的默认数据库是sqlite3。 我已经在Django v 1.4和Django v 1.3.1上尝试了这个演示(必须在settings.py中对Django v 1.3.1进行一些调整)。按照HTSQL Django-gateway Blog中的说明,我在django项目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)
它抛出以下错误:
TransactionManagementError: This code isn't under transaction management
可以在pastebin
查看整个错误跟踪我也在我自己的新项目上尝试了这个但同样的错误。
答案 0 :(得分:4)
当你从Django shell使用HTSQL时,你必须明确地打开一个事务:
>>> 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)
对不起,文档不清楚。我们可能会在将来的版本中对其进行更改。