How to tell if your select query is within a transaction or not?

Since Django 1.6 you can tell if you're in autocommit mode via transaction.get_autocommit API.

from django.db import transaction

if transaction.get_autocommit():
    pass  # We are in autocommit

Since Django 1.7, Connection.in_atomic_block will tell you if a connection is inside a transaction or not. It doesn't seem like this is documented, but it Works On My Machine:

from django.db import transaction
cxn = transaction.get_connection()
if cxn.in_atomic_block:
    print "We're inside a transaction!"