2011-10-08 7 views
5

Bir sınıfım var:Yabancı anahtar güncellendiğinde Python/SQLAlchemy - yük ilişkisi?

class Chart(Base): 
    __tablename__ = 'chart' 
    id = C('chart_id', Integer, primary_key=True) 
    element_id = C(Integer, ForeignKey('element.element_id')) 
    element = relationship(Element) 
    name = C(String) 

    def __init__(self, name): 
     self.name = name 

Kullanımı oldukça yaygındır,

chart = Chart('Some name') 
chart.element_id = element_id 

Ancak chart.element öğesi, element_id ayarlandıktan sonra Yoktur. Yıkama/taahhütten önce bu ilişkiyi yeni nesne için otomatik olarak yüklemek için herhangi bir yolu var mı?

cevap

5

iyi seçenek ilişkisi gemiye

chart = Chart('Some name') 
chart.element = element 

atama doğrudan nesnedir. element_id'u atarsanız, temizleyene kadar bellekte kalır. Dahili olarak SELECT * FROM ELEMENT WHERE ELEMENT.id = element_id numaralı bir sorguyu tetikleyecektir, ancak bu element_id verileri depolanmayacak veya bellekte olacaktır.

Bu nedenle, eğer temizlemek istemiyorsanız doğrudan nesne atamanızı öneririm.

Bu yardımcı olur umarım.

+1

Yanıt için teşekkürler. Şimdi bu şekilde kullanıyorum. Fonksiyonum element_id alır ve ben bir Grafik nesnesinde ayarlamak için kendimden eleman alıyorum (floş dahili olarak yapılır). Tek yol gibi görünüyor. – Victor