2

Djangoプロジェクトの1つにHTSQLを使用しようとしています。そのために、HTSQL/Djangoの要件を提供するためにここに記載されている手順に従いまし。次に、HTSQLリポジトリのクローンを作成して、ここからexample/demoを試しまし。デモの例で使用されているデフォルトのデータベースはsqlite3です。このデモをDjangov1.4とDjangov1.3.1の両方で試しました(Django v 1.3.1のsettings.pyでいくつかの調整を行う必要がありました)。HTSQL Django-gatewayブログで説明されているように、私はdjangoプロジェクトシェルに次のコードを記述しました。

>>> 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で見ることができます

私も自分の新しいプロジェクトでこれを試しましたが、同じエラーです。

4

1 に答える 1

4

Djangoシェルから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)

申し訳ありませんが、ドキュメントがそれについて明確ではありません。将来のリリースで変更される可能性があります。

于 2012-08-22T13:47:04.643 に答える