好的,所以我在這裏遇到了一些問題。我需要能夠爲某些sqlalchemy創建一種導入/導出功能。現在,這些都不是我定義的對象,所以要得到我做的列:重新創建一些sqlalchemy對象
for attr, value in res.__class__.__dict__.iteritems():
if isinstance(value, InstrumentedAttribute):
data = eval("res." + str(attr))
param_dict[attr] = data
現在這個正確得到我,對象的屬性。但是,我不能確定init的參數是相同的,因爲我不是處理這個對象的人。因此,無法像一個情況:
class SomeClass(model.Base):
my_column = Column(String)
....some other stuff...
def __init__(self, mycolumn, ...):
self.my_column = mycolumn
因此,在這種情況下,我沒有字段的名稱和參數名稱之間的對應關係由init作爲收到。我目前contraining誰定義這些類的人擁有所有的默認值初始化指標的影響,所以我可以只:
obj = SomeClass()
exec "obj." + attr + " = " + param[attr]
不過我想甚至從這個約束脫身。有什麼辦法可以做到這一點?
1.爲什麼? 2.使用泡菜。 3.除非絕對必要,否則不要使用eval - 這裏getattr/setattr就足夠了。 –
因爲我看不到另一種創建導入/導出對象機制的方式。鹹菜和sqlalchemy物品一起工作嗎? – Bogdan
pickle有一個處理任何類型的對象的協議。 –