使用变量引用列名(SQLAlchemy ORM)

时间:2016-07-22 01:05:46

标签: sqlalchemy

SQLAlchemy ORM允许:

instance1 = Class1()
instance1.foo = 'bar'

但是,我想要做的是引用列名称' foo'将它作为变量传递给实例,如:

column_name = 'foo'
instance1[column_name] = 'bar'  # or
instance1.column(column_name) = 'bar'  # or
instance1.Column(column_name) = 'bar'

或者,或许要做类似的事情:

instance1=Class1(foo='bar') # or
instance1=Class1('foo':'bar')

或:

dict = {'foo':'bar'}
instance1 = Class1(dict) # or
instance1 = Class1(**dict) # <-- THIS *DOES* WORK

当然,上述工作都不是。有没有一种方法可以用变量引用列名?

仅供参考,我正在尝试做的更大图片版本是将数据收集到字典中,其中的键与多个表中的列名称子集相匹配。然后我想将我在字典中收集的任何内容转储到这些表中:

instance1 = Class1()
instance2 = Class2()
for key in data_dictionary:
   instance1[key] = data_dictionary[key]
   instance2[key] = data_dictionary[key]

或简单地说:

instance1 = Class1(data_dictionary)
instance2 = Class2(data_dictionary)

感谢您的帮助, 安德鲁

1 个答案:

答案 0 :(得分:1)

谢谢你,univerio - 以下作品:

dict = {'foo':'bar'}
instance = Class1(**dict)

与您的其他建议一样:

setattr(instance, 'foo', 'bar')