NameError - FLASK SQLALCHEMY - 使用数据库模型,即列

时间:2015-01-03 17:05:20

标签: python playframework flask sqlalchemy

我正在尝试重用数据库表类/模型

我的模型如下所示restmodels.py

 # attributes master - holds the main product attributes
class AttributesMst(db.Model):
    __tablename__ = 'oc_attribute'
    attribute_id = db.Column(db.INT, primary_key=True, autoincrement=True, nullable=False)
    attribute_group_id = AttributesGroups.attribute_group_id
    sort_order = db.Column(db.INT, nullable=False)


#Attribute Groups
class AttributesGroups(db.Model):
    __tablename__ = 'oc_attribute_group'
    attribute_group_id = db.Column(db.INT, primary_key=True, autoincrement=True, nullable=False)
    sort_order = db.Column(db.INT, nullable=False)



# attribute descriptions and language
class AttributesDescrptn(db.Model):
    __tablename__ = 'oc_attribute_description'
    attribute_id = AttributesMst.attribute_id
    language_id = db.Column(db.INT, primary_key=True, autoincrement=False, nullable=False)
    name = db.Column(db.VARCHAR(64), nullable=False)

当我运行代码时,我得到以下Traceback。

Traceback (most recent call last):
  File "/home/seroney/PycharmProjects/TestProject/Addresses/restmodels.py", line 108, in <module>
    class AttributesMst(db.Model):
  File "/home/seroney/PycharmProjects/TestProject/Addresses/restmodels.py", line 111, in AttributesMst
    attribute_group_id = AttributesGroups.attribute_group_id
NameError: name 'AttributesGroups' is not defined

请注意,这些课程位于同一个文件中。问候。

我想要实现的是重用像Play Framework一样的表格列。

1 个答案:

答案 0 :(得分:1)

引用后定义AttributesGroups。这就是你获得NameError的原因。但是,最后,我认为你正在尝试创建一个外键。 (但是,使用新的Play Framework,我可能是错的。)

要使用SQLAlchemy创建外键,请替换

attribute_group_id = AttributesGroups.attribute_group_id

attribute_group_id = db.Column(db.Integer, db.ForeignKey('oc_attribute_groups.attribute_group_id'))