2

我在 Flask 下使用 SQLAlchemy。我有一个表格,代表我的系统可以处于的模式。我还有一个表格,其中包含适用于每种模式的海拔列表。(所以这是一个多对多的关系。)过去,当我向映射到表的类添加属性(如elevations内部ScanModes)时,目标也是一个类。

将高程包装在一个类中(并制作相应的表?)这样我可以relationship用来ScanModes.elevations工作,还是应该使用启用查询的属性?我也愿意接受其他建议。

elevation_mode_table = db.Table('elevation_mode', db.metadata,
                                db.Column('scan_mode', db.String,
                                          db.ForeignKey('scan_modes'),
                                          nullable=False),
                                db.Column('elevation', db.Float,
                                          nullable=False),
                                db.PrimaryKeyConstraint('scan_mode', 
                                                        'elevation'))

class ScanModes(db.Model):
    scan_mode = db.Column(db.String, primary_key=True)
    elevations = ?

    def __init__(self, scan_mode):
        self.scan_mode = scan_mode
4

1 回答 1

3

最直接的方法是将elevation_mode_table映射到一个类:

from sqlalchemy.orm import mapper
class ElevationMode(object):
    pass

mapper(ElevationMode, elevation_mode_table)

class ScanModes(db.Model):
    elevations = relationship(ElevationMode)

当然更容易的是首先让 ElevationMode 成为一个声明的类,如果你需要处理elevation_mode_table,你可以从ElevationMode.__table__......

这里的“查询启用属性”的想法,当然你也可以这样做,尽管你会失去关系的缓存优势。

于 2012-06-12T22:10:36.540 回答