2015-03-31 142 views
1

我正在学习本教程。瓶 - 数据创建

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-vi-profile-page-and-avatars

我在第6部分,但我犯了一个错误,并删除数据库。

我回到了部分4

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database

我已经重新创建数据库的脚本db_create.py和迁移它。

但是,我试图添加几行数据。我没有高于这个

from app import db, models 

线是确定

但是我加入这一行u = models.User(nickname='john', email='[email protected]')突然,我有错误(请参阅下面的轨迹)。

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 2, in __init__ 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/instrumentation.py", line 324, in _new_state_if_none 
    state = self._state_constructor(instance, self) 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 725, in __get__ 
    obj.__dict__[self.__name__] = result = self.fget(obj) 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/instrumentation.py", line 158, in _state_constructor 
    self.dispatch.first_init(self, self.class_) 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/event/attr.py", line 260, in __call__ 
    fn(*args, **kw) 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 2702, in _event_on_first_init 
    configure_mappers() 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 2598, in configure_mappers 
    mapper._post_configure_properties() 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 1696, in _post_configure_properties 
    prop.init() 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/interfaces.py", line 144, in init 
    self.do_init() 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/relationships.py", line 1550, in do_init 
    self._process_dependent_arguments() 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/relationships.py", line 1606, in _process_dependent_arguments 
    self.target = self.mapper.mapped_table 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 725, in __get__ 
    obj.__dict__[self.__name__] = result = self.fget(obj) 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/orm/relationships.py", line 1523, in mapper 
    argument = self.argument() 
    File "/home/andy.kwok/microblog/flask/lib/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.py", line 283, in __call__ 
    (self.prop.parent, self.arg, n.args[0], self.cls) 
sqlalchemy.exc.InvalidRequestError: When initializing mapper Mapper|User|user, expression 'Post' failed to locate a name ("name 'Post' is not defined"). If this is a class name, consider adding this relationship() to the <class 'app.models.User'> class after both dependent classes have been defined. 

为什么?

帮助,我拉我的头发!

回答

2

这可能是因为当User被加载时,它试图寻找尚未加载的Post

你可以尝试的是在Post模型中寻找__tablename__。现在在User模型中,您定义了relationshipPost,请使用Post__tablename__中的字符串。这应该工作。

+0

嗨@adarsh,你钉了它的权利。 'models.py'中的这一行导致了一个问题:'posts = db.relationship('Post',backref ='author',lazy ='dynamic') '。一旦我评论这条线,事情就很好。 – 2015-03-31 10:54:14