【问题标题】:I am having an issue populating my tables for my pyramid project我在为金字塔项目填充表格时遇到问题
【发布时间】:2012-06-10 02:31:49
【问题描述】:

所以我最近从 sqlite 更改为 postgres,以便我可以将我的网站推送到 heroku。我遇到的问题是表格现在乱序构建??

class Data(Base):
    __tablename__ = 'data'
    id = Column(Integer, autoincrement=True, primary_key=True)
    data_type = Column(Integer, primary_key=True, unique=True)
    value = Column(Text, primary_key=True, unique=True)
    range_lower = Column(Integer)
    range_upper = Column(Integer)
    gold = Column(Boolean)

    def __init__(self, data_type, value, range_lower=0, range_upper=0, gold=False):
        self.data_type = data_type
        self.value = value
        self.range_lower = range_lower
        self.range_upper = range_upper
        self.gold = gold




class Page(Base):
    __tablename__ = 'page'
    id = Column(Integer, autoincrement=True, primary_key=True)
    data_type = Column(Integer, ForeignKey('data.data_type'))
    description = Column(Text)
    annotations_per_page = Column(Integer)
    uses_gold = Column(Boolean)

    def __init__(self, data_type, description='default description', annotations_per_page=1, uses_gold=False):
        self.data_type = data_type
        self.description = description
        self.annotations_per_page = annotations_per_page
        self.uses_gold = uses_gold

我遇到的问题是 sqlalchemy/pyramid 或任何由 python setup.py 生成的填充脚本在这些类型的项目之一上开发,试图在表数据之前创建表页。由于 Page 中有依赖于 Table 的外键,因此这是失败的。我在文档中找不到任何提及此问题的内容,我们将不胜感激。

-山姆

【问题讨论】:

  • 你能显示你的基类定义吗?您对 Base 有一个定义还是多个?附带说明 - 您不需要那些难看的构造函数,SQLAlchemy 自动提供一个默认构造函数,它的作用完全相同。

标签: python postgresql sqlalchemy pyramid


【解决方案1】:

您需要使用数据库元数据

还有这些功能 元数据=元数据() creat_all()

它按依赖顺序生成表。

参考:http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html

【讨论】:

  • 所以我正在使用类似 session = declarative_base() 的东西。会话有一个 session.metadata,这与您推荐的不同吗?
  • declarative_base() 将给你可选的元数据实例,你可以直接使用这个实例与 creat_all() 方法。
猜你喜欢
  • 2014-03-22
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多