Python 如何在不输入列名的情况下引用列?

Python 如何在不输入列名的情况下引用列?,python,sqlalchemy,Python,Sqlalchemy,我有几个表,其中有许多列应该用来插入数据。我不想再次键入列的名称,因为我已经在“SQLAlchemy类定义”中键入了它们 从发布的其他问题中,我看到您可以使用下面的代码获得列的名称 for c in datatable.__table__.columns.keys(): print(c) 这将给出列名。但是,我想要的是将数据插入到列中,而不仅仅是读取列名。下面是我试过的 for_counter = 0 for instance in SESSION.query(SampleClass)

我有几个表,其中有许多列应该用来插入数据。我不想再次键入列的名称,因为我已经在“SQLAlchemy类定义”中键入了它们

从发布的其他问题中,我看到您可以使用下面的代码获得列的名称

for c in datatable.__table__.columns.keys():
    print(c)
这将给出列名。但是,我想要的是将数据插入到列中,而不仅仅是读取列名。下面是我试过的

for_counter = 0
for instance in SESSION.query(SampleClass).filter(SampleClass.id == 2): 
    instance.__table__.columns.keys()[(for_counter)] = "texttoinsert"
    for_counter += 1
我想我可以用这个来“索引”列,但当代码运行并检查数据库时,只有自动递增的“ID”列和设置为默认值的日期才能获取数据。“instance”中的所有其他列都没有得到任何数据,而我希望在列中找到“texttoinsert”


基本上,我只想构建一个函数,只要指定了表的名称,它就可以“可能使用”列索引来插入数据。有什么方法可以实现这一点吗?

for循环正在替换
实例中的值。\uuu table\uuu.columns.keys()
数组,而不是在
实例上设置相应的属性。这应该可以做到:

for instance in SESSION.query(SampleClass).filter(SampleClass.id == 2): 
  for colname in instance.__table__.columns.keys():
    setattr(instance, colname, 'text_to_insert')

作为补充说明,由于所有实例都具有相同的键,因此反转两个循环将带来更好的性能(您不需要每次都重新创建键数组)。

这已经奏效。老兄,你刚刚帮我省了很多打字的时间。同样重要的是,我已经反转了循环,从4秒到现在的0.514秒!谢谢你的额外提示