动态获取列名的Python访问单元格

动态获取列名的Python访问单元格,python,cursor,pyodbc,Python,Cursor,Pyodbc,我正在使用pyodbc连接到数据库,需要从某些表中提取信息 我正在基于某些列名的值为表中的每一行创建一个唯一的id。我从配置文件中获取用于id的每个列名 我可以使用硬编码的列名执行此操作: connection = pyodbc.connect("connection string") cursor = connection.cursor() cursor.execute("select * from " + t) //t is the table name rows = cursor.fe

我正在使用pyodbc连接到数据库,需要从某些表中提取信息

我正在基于某些列名的值为表中的每一行创建一个唯一的id。我从配置文件中获取用于id的每个列名

我可以使用硬编码的列名执行此操作:

connection = pyodbc.connect("connection string")
cursor = connection.cursor() 
cursor.execute("select * from " + t)  //t is the table name
rows = cursor.fetchall()
for row in rows: 
    id = `row.GroupID` + `row.Leg` 

但是如何用配置文件中的名称替换列名?

您可以使用
getattr

colname = "GroupID"
getattr(row, colname)

您可以使用
getattr

colname = "GroupID"
getattr(row, colname)

假设您已经从配置文件中读取了列名并将其存储在列表(名为“columns”)中,您可以按照以下方式执行操作:

for row in rows:
    id = ''.join([getattr(row, col) for col in columns])

这将从行对象获取属性并将它们放入列表中,然后使用join将其连接在一起,就像在您的示例中一样。

假设您已经从配置文件中读取了列名并将其存储在列表(名为“列”)中,您可以执行以下操作:

for row in rows:
    id = ''.join([getattr(row, col) for col in columns])
这将从行对象中获取属性并将它们放入列表中,然后使用join将列表连接在一起,就像您的示例中一样