2011-04-10 13 views
6

SQLAlchemy kullanıldığında, bir nesneyi bir yabancı anahtar olan bir sütuna yerleştirmek ve sonra da bunu işlemek için ideal yol nedir? Aşağıdaki kodda yabancı bir nesnenin yerleştirilmesi ile ilgili bir sorun var mı?SQLAlchemy'de bir yabancı anahtar içeren bir nesnenin eklenmesinin uygun yolu nedir?

def retrieve_objects(): 
    session = DBSession() 
    return session.query(SomeClass).all() 

def insert_objects(): 
    session = DBSession() 
    for obj in retrieve_objects(): 
     another_obj = AnotherClass(somefield=0) 
     obj.someforeignkey = another_obj 
     session.add(obj) 
    session.flush() 
    transaction.commit() 
    session.close() 
    return None 
+2

senin model ve her şey sizin için otomatik olarak yapılacaktır ??? Bu yüzden Sqlalchemy var. Eğer özelliklerini kullanmıyorsanız, Sqlalchemy'yi hiç kullanmayın. –

cevap

5

ORM nesnelerinizde SQLAlchemy ilişkilerini kullanmıyorsanız, yabancı anahtarlarla el ile uğraşmanız gerekir. Bu, ilk ebeveyn nesne oluşturmak geri veritabanından birincil anahtarı almak ve çocuğun yabancı anahtarında o anahtarı kullanmak zorunda gelir: Eğer bir parçası olarak yabancı anahtar ilişkisi beyan niye

def retrieve_objects(): 
    session = DBSession() 
    return session.query(SomeClass).all() 

def insert_objects(): 
    session = DBSession() 
    for obj in retrieve_objects(): 
     another_obj = AnotherClass(somefield=0) 
     session.add(another_obj) 
     session.flush() # generates the pkey for 'another_obj' 
     obj.someforeignkey = another_obj.id # where id is the pkey 
     session.add(obj) 
    transaction.commit() 
İlgili konular