Python 烧瓶-数据创建

Python 烧瓶-数据创建,python,flask,Python,Flask,我正在学习这个教程 我在第6部分,但我犯了一个错误,删除了数据库 我回到第四部分 我用脚本db_create.py重新创建了数据库,并对其进行了迁移 然而,我试图添加几行数据。是我干的 from app import db, models 上面的那条线没问题 但是我添加了这一行u=models.User(昵称='john',email='2〕john@email.com)突然,我出现了错误(请参见下面的跟踪) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“”,第2行,在_i

我正在学习这个教程

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

我回到第四部分

我用脚本
db_create.py
重新创建了数据库,并对其进行了迁移

然而,我试图添加几行数据。是我干的

from app import db, models 
上面的那条线没问题

但是我添加了这一行
u=models.User(昵称='john',email='2〕john@email.com)
突然,我出现了错误(请参见下面的跟踪)

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第2行,在_init中__
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/instrumentation.py”,第324行,处于“新”状态
state=self.\u state\u构造函数(实例,self)
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/util/langhelpers.py”,第725行,在__
obj.\uuuuu dict\uuuuu[self.\uuuuuuuuuuu name\uuuuuuuuu]=结果=self.fget(obj)
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/instrumentation.py”,第158行,处于“状态”
self.dispatch.first_init(self,self.class_)
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/event/attr.py”,第260行,在调用中__
fn(*参数,**千瓦)
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/mapper.py”,第2702行,在第一次启动时
配置映射器()
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/mapper.py”,第2598行,在configure_mappers中
映射程序。_post_configure_properties()
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/mapper.py”,第1696行,在“post\u configure\u properties”中
prop.init()
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/interfaces.py”,第144行,在init中
self.do_init()
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/relationships.py”,第1550行,在do_init中
self.\u进程\依赖\参数()
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/relationships.py”,第1606行,在进程相关参数中
self.target=self.mapper.mapped_表
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/util/langhelpers.py”,第725行,在__
obj.\uuuuu dict\uuuuu[self.\uuuuuuuuuuu name\uuuuuuuuu]=结果=self.fget(obj)
mapper中的文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/orm/relationships.py”,第1523行
argument=self.argument()
文件“/home/andy.kwok/microblog/flask/lib/python2.7/site packages/sqlalchemy/ext/declarative/clsregistry.py”,第283行,在调用中__
(self.prop.parent,self.arg,n.args[0],self.cls)
sqlalchemy.exc.InvalidRequestError:初始化映射器映射器|用户|用户时,表达式“Post”未能找到名称(“未定义名称“Post”)。如果这是类名,那么在定义了两个依赖类之后,考虑将此关系()添加到类中。
为什么?


救命啊,我要脱掉头发了

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


您可以尝试在
Post
模型中查找
\uuu tablename\uuu
。现在,在定义了与
Post
关系的
User
模型中,使用
Post
\uu tablename\uuu
中的字符串。那应该行。

Hi@adarsh,你说得对。正是
models.py
中的这一行引起了问题:
posts=db.relationship('Post',backref='author',lazy='dynamic')
。一旦我评论了这句话,一切都很好。
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.