class KeywordAssociation(object):
pass
- mapper(User, users_table)
- mapper(Keyword, keywords_table)
-
+ # Article mapper, relates to Keyword via KeywordAssociation
+ mapper(Article, articles_table, properties={
+ 'keywords':relation(KeywordAssociation, lazy=False, cascade="all, delete-orphan")
+ }
+ )
+
# mapper for KeywordAssociation
# specify "primary key" columns manually
mapper(KeywordAssociation, itemkeywords_table,
- primary_key = [itemkeywords_table.c.article_id, itemkeywords_table.c.keyword_id],
+ primary_key=[itemkeywords_table.c.article_id, itemkeywords_table.c.keyword_id],
properties={
- 'keyword' : relation(Keyword, lazy = False),
- 'user' : relation(User, lazy = False)
+ 'keyword' : relation(Keyword, lazy=False),
+ 'user' : relation(User, lazy=False)
}
)
+
+ # user mapper
+ mapper(User, users_table)
- # Article mapper, relates to Keyword via KeywordAssociation
- mapper(Article, articles_table, properties={
- 'keywords':relation(KeywordAssociation, lazy=False)
- }
- )
+ # keyword mapper
+ mapper(Keyword, keywords_table)
session = create_session(bind_to=engine)
# select by keyword
import sqlalchemy.sql as sql
import sqlalchemy.schema as schema
-from sqlalchemy.exceptions import *
+import sqlalchemy.exceptions as exceptions
from sqlalchemy import logging
import util as mapperutil
source_column = binary.right
dest_column = binary.left
else:
- raise ArgumentError("Can't locate a primary key column in self-referential equality clause '%s'" % str(binary))
+ raise exceptions.ArgumentError("Can't locate a primary key column in self-referential equality clause '%s'" % str(binary))
# for other relationships we are more flexible
# and go off the 'foreignkey' property
elif binary.left in foreignkey:
processor = BinaryVisitor(compile_binary)
sqlclause.accept_visitor(processor)
if len(self.syncrules) == rules_added:
- raise ArgumentError("No syncrules generated for join criterion " + str(sqlclause))
+ raise exceptions.ArgumentError("No syncrules generated for join criterion " + str(sqlclause))
def dest_columns(self):
return [r.dest_column for r in self.syncrules if r.dest_column is not None]
dest[self.dest_column.key] = value
else:
if clearkeys and self.dest_primary_key():
- raise exceptions.AssertionError("Dependency rule tried to blank-out a primary key column")
+ raise exceptions.AssertionError("Dependency rule tried to blank-out primary key column '%s' on instance '%s'" % (str(self.dest_column), mapperutil.instance_str(dest)))
if logging.is_debug_enabled(self.logger):
self.logger.debug("execute() instances: %s(%s)->%s(%s) ('%s')" % (mapperutil.instance_str(source), str(self.source_column), mapperutil.instance_str(dest), str(self.dest_column), value))