Python 在塔架中创建模型时遇到问题

Python 在塔架中创建模型时遇到问题,python,model,sqlalchemy,pylons,Python,Model,Sqlalchemy,Pylons,我一直在读《塔架》这本书,在读了关于模型的部分后,我意识到它已经过时了。然后我转到官方的Pylons文档,在Pylons 1.0中创建模型- 我遵循了他们的做法,但仍然失败 ./blog/model/init.py 有两个同名的班级让我很震惊。。。但无论如何,这是教程所说的 但是,当我尝试运行代码时,我得到: 28, in <module> orm.mapper(Page, pages_table) NameError: name 'pages_table' is not

我一直在读《塔架》这本书,在读了关于模型的部分后,我意识到它已经过时了。然后我转到官方的Pylons文档,在Pylons 1.0中创建模型-

我遵循了他们的做法,但仍然失败

./blog/model/init.py

有两个同名的班级让我很震惊。。。但无论如何,这是教程所说的

但是,当我尝试运行代码时,我得到:

 28, in <module>
    orm.mapper(Page, pages_table)
NameError: name 'pages_table' is not defined
28,在
orm.mapper(第页、第页和表)
NameError:未定义名称“pages\u table”

吃这个吗?我怎样才能让它不失败/

首先,您不应该用相同的名称声明两个类。这到底是怎么回事

其次,您可能希望阅读正式的SQLA文档,而不是挂架。升级后的Pylons文档有点凌乱,仍然有很多0.9.7参考。 此处描述了声明性扩展:

第三,声明性意味着您不需要将类绑定到表,它是在类定义中完成的

这是映射的充分声明,您可以继续使用它:

class Page(Base):
   __tablename__ = 'pages'

   title   = Column(Unicode(40), primary_key=True)
   content = Column(UnicodeText(), default=u'')

   def __init__(self, title, content=None):
      self.title   = title
      self.content = content

   def __unicode__(self):
      return self.title

   __str__ = __unicode__

首先,不应该用相同的名称声明两个类。这到底是怎么回事

其次,您可能希望阅读正式的SQLA文档,而不是挂架。升级后的Pylons文档有点凌乱,仍然有很多0.9.7参考。 此处描述了声明性扩展:

第三,声明性意味着您不需要将类绑定到表,它是在类定义中完成的

这是映射的充分声明,您可以继续使用它:

class Page(Base):
   __tablename__ = 'pages'

   title   = Column(Unicode(40), primary_key=True)
   content = Column(UnicodeText(), default=u'')

   def __init__(self, title, content=None):
      self.title   = title
      self.content = content

   def __unicode__(self):
      return self.title

   __str__ = __unicode__

同意:你对使用相同名称创建类的建议表示怀疑是正确的。在发布我的问题后不久,我的谷歌搜索出现了,这是教程为Pylons 1.0编写的代码。现在我的代码开始工作了。同意:你对创建同名类的建议表示怀疑是正确的。在发布我的问题后不久,我的谷歌搜索出现了,这是教程为Pylons 1.0编写的代码。我的代码现在可以用了。