0
我有这些表: 1)用户的SQLAlchemy:ValueError异常
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key = True)
fname = Column(String(45))
lname = Column(String(45))
mail = Column(String(45))
password = Column(String(45))
courses = relationship("Course", secondary=user_course, backref="users")
universities = relationship("University", secondary=user_university, backref="users")
def add_university(self, university):
universities = self.universities
universities.append(university)
self.universities = universities
def add_course(self, course):
courses = self.courses
courses.append(course)
self.courses = courses
2)大学
class University(Base):
__tablename__ = 'universities'
id = Column(Integer, primary_key=True)
date = Column(DateTime)
name = Column(String(45))
3)课程
class Course(Event):
__tablename__ = 'courses'
id = Column(Integer, ForeignKey('events.id'), primary_key=True)
name = Column(String(45))
year = Column(Integer)
__mapper_args__ = {
'polymorphic_identity':'course',
}
events = relationship("Event", secondary=course_event, backref="courses")
所以一个多对多到许多与用户课程和用户大学,以及许多课程活动(当然还有家长)。
当我尝试添加我的方法一所大学的在用户定义它的工作原理,但是当我尝试添加一门课程我得到这个错误:
回溯(最近通话最后一个):
File "/Users/arnoutaertgeerts/Documents/Eclips/SlideTalk 2.0/test_SQL.py", line 473, in <module>
arnout.add_course(Analyse)
File "/Users/arnoutaertgeerts/Documents/Eclips/SlideTalk 2.0/test_SQL.py", line 101, in add_course
courses.append(course)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 1046, in append
item = __set(self, item, _sa_initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 1021, in __set
item = getattr(executor, 'fire_append_event')(item, _sa_initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 714, in fire_append_event
item, initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/attributes.py", line 800, in fire_append_event
value = fn(state, value, initiator or self)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/attributes.py", line 1026, in emit_backref_from_collection_append_event
passive=PASSIVE_NO_FETCH)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/attributes.py", line 854, in append
collection.append_with_event(value, initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 655, in append_with_event
getattr(self._data(), '_sa_appender')(item, _sa_initiator=initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 1046, in append
item = __set(self, item, _sa_initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 1021, in __set
item = getattr(executor, 'fire_append_event')(item, _sa_initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/collections.py", line 714, in fire_append_event
item, initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/attributes.py", line 800, in fire_append_event
value = fn(state, value, initiator or self)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/attributes.py", line 1020, in emit_backref_from_collection_append_event
_acceptable_key_err(state, initiator)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/SQLAlchemy-0.7.9-py2.7.egg/sqlalchemy/orm/attributes.py", line 982, in _acceptable_key_err
manager_of_class(initiator.class_)[initiator.key]))
ValueError异常:对象不是类型的属性相关联User.courses
但是,如果我停下让课程从事件继承,它的工作!
任何想法?
一面评论:你不需要调用'self.universities =大学'或'self.courses = courses'为了添加一个对象的关系 - 每个头两行方法就够了。 – van 2013-03-03 19:23:22
请发布您事件映射类的代码 – vvladymyrov 2013-03-04 15:56:16
问题解决! http://www.sqlalchemy.org/trac/ticket/2674感谢您的帮助 – arnoutaertgeerts 2013-03-07 11:28:49