我正在使用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)
假设您的列名已经从配置文件中读取并存储在一个列表中(名为"columns"),那么您可以执行以下操作:
for row in rows:
id = ''.join([getattr(row, col) for col in columns])
这将从行对象中获取属性,并将它们放在一个列表中,然后使用join将其连接在一起,就像您的示例中一样。