【问题标题】:Pylons 1.0 and SQLAlchemy 0.6 - How do I Model?Pylons 1.0 和 SQLAlchemy 0.6 - 我如何建模?
【发布时间】:2010-07-28 14:16:40
【问题描述】:

我一直在阅读 http://pylonsbook.com/en/1.1/starting-the-simplesite-tutorial.html 并遵循他们的 SimpleSite 教程,但在创建模型时遇到了一些问题。

他们在教程中使用的模型导入是:

"""The application's model objects"""
import sqlalchemy as sa
from sqlalchemy import orm

from simplesite.model import meta

# Add these two imports:
import datetime
from sqlalchemy import schema, types

然后他们使用它来创建一个表:

page_table = schema.Table('page', meta.metadata,

但是,当我尝试这样做时,我得到:

AttributeError: 'module' object has no attribute 'metadata'

我猜 Pylons 在版本升级期间改变了它们的方式......

那么我该怎么做呢?有人可以将我链接到有关制作模型和处理数据库连接/查询的更新教程吗? :/

【问题讨论】:

  • 您可以使用dir(meta) 内省模块 - 元数据可能会稍微重命名

标签: python model sqlalchemy pylons


【解决方案1】:

Pylons 1.0 使用声明性 Base 作为模型的默认值。

示例:

from sqlalchemy import Column
from sqlalchemy.types import Integer, Unicode,
from MYPROJECT.model.meta import Base

class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True)
    username = Column(Unicode(100))

你可以在http://pylonshq.com/docs/en/1.0/models/看到更新的参考

【讨论】:

    【解决方案2】:

    我认为您应该在 Pylons 1.0 中使用 Base.metadata 而不是 meta.metadata。

    【讨论】:

      【解决方案3】:

      应该是这样的:

      from blog.model.meta import Session, Base
      
      article_table = sa.Table("article", Base.metadata,
          sa.Column("id", sa.types.Integer, primary_key=True),
          sa.Column("lang", sa.types.String(255), nullable=False),
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-09
        • 1970-01-01
        • 2011-02-08
        • 2011-03-06
        • 2011-09-05
        • 2011-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多