좋아, 그래서 여기에 약간의 문제가 있습니다. 일부 sqlalchemy에 대해 일종의 가져 오기/내보내기 기능을 만들 수 있어야합니다. 이제이 그래서 내가 뭘 열을 얻기 위해, 내가 정의있어 개체 수 없습니다 : 일부 sqlalchemy 개체 다시 만들기
for attr, value in res.__class__.__dict__.iteritems():
if isinstance(value, InstrumentedAttribute):
data = eval("res." + str(attr))
param_dict[attr] = data
지금이 올바르게 나에게 해당 개체의 속성을 가져옵니다. 그러나 나는이 객체를 다루는 사람이 아니기 때문에
의 매개 변수가 동일하다는 것을 확신 할 수 있습니다. 초기화가 받았다으로
class SomeClass(model.Base):
my_column = Column(String)
....some other stuff...
def __init__(self, mycolumn, ...):
self.my_column = mycolumn
이 경우에 I 필드의 이름과 매개 변수의 이름 사이에 correspondance에없는 : 그래서 같은 상황이있을 수 있습니다. 나는 현재이 클래스를 정의하는 사람이 디폴트 값을 모두 초기화 parametes을 가지고 contraining있어 그래서 난 그냥 수 : 내가 좋아하는 것 그러나
obj = SomeClass()
exec "obj." + attr + " = " + param[attr]
도이 구속에서 멀리 얻을 수 있습니다. 내가 이것을 성취 할 수있는 방법이 있습니까?
1. 이유는 무엇입니까? 2. 피클을 사용하십시오. 3. 절대적으로 필요하지 않는 한 eval을 사용하지 마십시오. 여기 getattr/setattr로 충분합니다. –
가져 오기/내보내기 개체 메커니즘을 만드는 또 다른 방법이 없기 때문에. pickle은 sqlalchemy 오브젝트로 작동합니까? – Bogdan
pickle에는 모든 유형의 객체를 다루는 프로토콜이 있습니다. –