So I recently changed from sqlite to postgres so that I could push my site to heroku. The issue I am having is that the tables are now getting built out of order??
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
The issue I am having is that sqlalchemy/pyramid or whatever the populate script generated by python setup.py develop on one of these types of projects, is trying to create the table Page before the table Data. Since there are foreign keys in Page that depend on Table, this is failing. I can’t find any mention of this issue in the documentation, any insight would be greatly appreciated.
-Sam
you need to use database metadata
and these functions
metadata =MetaData()
creat_all()
it generates the tables in order of their dependency.
ref:http://docs.sqlalchemy.org/en/rel_0_7/core/schema.html