我一直在阅读《 Pylons书》,并且在接触到有关模型的部分时,意识到它已经过时了。因此,我随后转到了官方Pylons文档,以在Pylons 1.0中创建模型-http://pylonshq.com/docs/en/1.0/tutorials/quickwiki_tutorial/
我遵循了他们的能力,但仍然失败。
./blog/model/init.py
"""The application's model objects"""
from sqlalchemy import orm, Column, Unicode, UnicodeText
from blog.model.meta import Session, Base
def init_model(engine):
"""Call me before using any of the tables or classes in the model"""
Session.configure(bind=engine)
class Page(Base):
__tablename__ = 'pages'
title = Column(Unicode(40), primary_key=True)
content = Column(UnicodeText(), default=u'')
class Page(object):
def __init__(self, title, content=None):
self.title = title
self.content = content
def __unicode__(self):
return self.title
__str__ = __unicode__
orm.mapper(Page, pages_table)
拥有两个同名的类会让我大吃一惊……但是,这是本教程所说的。
但是,当我尝试运行代码时,我得到:
28, in <module>
orm.mapper(Page, pages_table)
NameError: name 'pages_table' is not defined
吃这个吗我如何才能做到这一点呢? :/
最佳答案
首先,您不应声明两个具有相同名称的类。那应该怎么工作?
其次,您可能想阅读SQLA官方文档,而不是Pylons。升级后,Pylons文档有些混乱,并且仍然有很多0.9.7参考。
声明性扩展在这里描述:http://www.sqlalchemy.org/docs/reference/ext/declarative.html
第三,声明式意味着您不需要将类绑定到表,这是在类定义中完成的。
这是足够的映射声明,您可以继续使用它:
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__
关于python - 在Pylons中创建模型时遇到麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3377013/