저는 Flask에서 SQLAlchemy를 사용하고 있습니다. 내 시스템이 들어갈 수있는 모드를 나타내는 테이블이 있습니다. 각 모드에 적용 할 수있는 고도 목록이 포함 된 테이블도 있습니다. (이것은 다 대 다 관계입니다.) 이전에 표에 매핑 된 클래스에 속성 (예 : elevations
, ScanModes
)을 추가 한 경우 대상도 클래스였습니다.SQLAlchemy에서 클래스없는 값과의 관계를 만들려면 어떻게해야합니까?
클래스에서 입면도를 감싸고 (해당 테이블을 만드시겠습니까?) relationship
을 사용하여 ScanModes.elevations
을 사용할 수 있습니까? 아니면 query-enabled property을 사용해야합니까? 나는 또한 다른 제안에 열려 있습니다. 필요하면 더 쉽게 물론
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 = 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
감사합니다. 나는 이것을 아침에 시험 할 것이다. 사이트에 와서 사람들에게 도서관을 지원해 주셔서 감사합니다. –
나는 이것이 내가 찾고있는 것이 아니라고 생각한다; 어쩌면 내가 원하는 것은 "SQLAlchemic"만큼 충분하지 않습니다. 나는'elevation' 속성이'elevation_mode_table'에서 가져온 값들의 풀린 목록 일 수 있다고 상상하고있었습니다. 나는 여기에 'ElevationMode' 객체 내부에서 캐싱을 수행했기 때문에 이것이 필요한 이유일까요? –
지금 나는 캐싱과 속성을 코드 ('elevations'는'_elevations'로 이름이 변경됨)와 함께 목록으로 만들 수 있으며,'elevations'는 getter가'_elevations' 속성에서 추출한 목록을 반환하는 속성이 될 수 있습니다. –