2012-06-06 33 views
0

所以我最近從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的/金字塔或任何由蟒蛇產生這些類型的項目之一setup.py的發展填入腳本,試圖在表中的數據之前創建表頁。由於頁面中存在依賴於表的外鍵,因此這是失敗的。在文檔中我找不到任何關於此問題的提及,任何見解都將不勝感激。

薩姆

+0

你能告訴你的基類的定義?你有Base還是Single的單一定義?作爲一個方面說明 - 你不需要那些難看的構造函數,SQLAlchemy會自動提供一個完全相同的默認構造函數。 – Sergey

回答

1

需要使用數據庫的元數據

並且這些功能 元數據=元數據() creat_all()

它產生在它們的依賴性的順序的表。

參考:HTTP://docs.sqlalchemy.org/en/rel_0_7/core/schema.html

+0

所以我使用類似 session = declarative_base()。會話有session.metadata,這是不是比你推薦的不同? – spdub

+0

declarative_base()會給你可選的元數據實例,你可以直接使用這個實例和creat_all()方法。 –

相關問題