summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/content/datamapping.txt23
-rw-r--r--lib/sqlalchemy/engine/threadlocal.py1
2 files changed, 24 insertions, 0 deletions
diff --git a/doc/build/content/datamapping.txt b/doc/build/content/datamapping.txt
index 3722f5ac5..32489c700 100644
--- a/doc/build/content/datamapping.txt
+++ b/doc/build/content/datamapping.txt
@@ -785,3 +785,26 @@ Many to Many can also be done with an association object, that adds additional i
for k in a.keywords:
if k.keyword.name == 'jacks_stories':
print k.user.user_name
+
+Keep in mind that the association object works a little differently from a plain many-to-many relationship. Members have to be added to the list via instances of the association object, which in turn point to the associated object:
+
+ {python}
+ user = User()
+ user.user_name = 'some user'
+
+ article = Article()
+
+ assoc = KeywordAssociation()
+ assoc.keyword = Keyword('blue')
+ assoc.user = user
+
+ assoc2 = KeywordAssociation()
+ assoc2.keyword = Keyword('green')
+ assoc2.user = user
+
+ article.keywords.append(assoc)
+ article.keywords.append(assoc2)
+
+ session.flush()
+
+ \ No newline at end of file
diff --git a/lib/sqlalchemy/engine/threadlocal.py b/lib/sqlalchemy/engine/threadlocal.py
index a96af4ea8..e78098fa3 100644
--- a/lib/sqlalchemy/engine/threadlocal.py
+++ b/lib/sqlalchemy/engine/threadlocal.py
@@ -22,6 +22,7 @@ class TLSession(object):
self.__tcount += 1
def reset(self):
try:
+ self.__transaction.close()
del self.__transaction
del self.__trans
except AttributeError: