2008-11-03 20 views

cevap

4

Verilerin zaten var olup olmadığını kontrol etmek için çocuğun __dict__ öznitelik sözlüğüne bakabileceğinizi düşünüyorum.

+0

O inşaat, thanks :) – Joril

3

(etkin aynı şeyi yapar gerçi) olduğu gibi) hasattr (kullanmaktır Haes cevap biraz daha neater:

>>> hasattr(X, 'children') 
False 
+0

Güzel, teşekkürler :) – Joril

+2

Mevcut sqlalchemy. 'hasattr (obj, field) 'nesneye değil, obj .__ dict__'. –

+0

SQLAlchemy 0.8'de test ettim ve bu nesne ayrılırsa işe yarar. Ancak ekliyse, hasattr kullanarak "çocuk" tembel yükünü tetikler, ki bu muhtemelen sizin istediğinizi değil. Bunun yerine, 0,8'de inspect() çağrısını kullanabiliriz: 'res = inspect (X)' '' res.unloaded' içinde '' - nesnenin takılı mı yoksa bağımsız mı olduğu çalışır. – foz

10

Hepiniz yüksüz özelliklerin bir listesini alabilirsiniz (ilişkiler ve sütunlar her ikisi de) sqlalchemy.orm.attributes.instance_state(obj).unloaded'dan.

Bkz: Completing object with its relations and avoiding unnecessary queries in sqlalchemy

daha kolay bir yolu aynı sonuçları verir inspect(), kullanmaktır: Bu çalışmaz

from sqlalchemy import inspect 
from sqlalchemy.orm import lazyload 

user = session.query(User).options(lazyload(User.articles)).first() 
ins = inspect(user) 

ins.unloaded # <- set or properties that are not yet loaded 
İlgili konular