如何引用列而不输入列名?

2024-10-04 09:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有几个表和许多列,应该插入数据。我不想再次键入列的名称,因为我已经在“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”。你知道吗

基本上,我只想构建一个函数,只要指定了表的名称,就可以“使用”列索引来插入数据。有办法做到这一点吗?你知道吗


Tags: columns数据instance代码in名称for键入
1条回答
网友
1楼 · 发布于 2024-10-04 09:22:37

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

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

另外,由于所有实例都具有相同的键,因此反转这两个循环将导致更好的性能(不需要每次都重新创建键数组)。你知道吗

相关问题 更多 >