diff options
-rw-r--r-- | doc/build/content/datamapping.txt | 23 | ||||
-rw-r--r-- | lib/sqlalchemy/engine/threadlocal.py | 1 |
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: |