首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy: ValueError

SQLAlchemy: ValueError
EN

Stack Overflow用户
提问于 2013-03-03 12:23:49
回答 1查看 620关注 0票数 1

我有以下表: 1)用户

代码语言:javascript
复制
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)大学

代码语言:javascript
复制
class University(Base):
    __tablename__ = 'universities'
    id = Column(Integer, primary_key=True)
    date = Column(DateTime)
    name = Column(String(45))

3)课程

代码语言:javascript
复制
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")

所以,很多人对很多人都有用户课程和用户大学,很多人对很多人有课程事件(当然是家长)。

当我试图用用户定义的方法添加一所大学时,它是有效的,但是当我试图添加一个课程时,我会得到以下错误:

回溯(最近一次调用):

代码语言:javascript
复制
 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类型的属性无关的对象

然而,如果我停止让课程继承事件,它确实有效!

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 11:32:32

问题解决了!这是票:http://sqlalchemy.org/trac/ticket/2674

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15185600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档