我有以下几行代码:
classinstance.col1 = queryresult.col1
classinstance.col2 = queryresult.col2
classinstance.col3 = queryresult.col3
classinstance.col4 = queryresult.col4
它将变量添加到
classinstance
并为queryresult
列的值分配与变量相同的名称。我希望使我的代码更具灵活性,并且不需要按名称标识列。为此,我想知道是否存在某种方法可以对所有列进行循环,而不是分别处理每个列。像这样(这是psuedocode而不是实际的代码,因为我不确定它实际上应该是什么样子):
for each var in vars(queryresult):
classinstance.(var.name) = var.value
这可能吗?需要什么?我是否有一些基本的误解?
最佳答案
我假设以下示例的结果中只有一行(在注释here的帮助下构建)。此处的关键组件是zip(row.cursor_description, row)
,用于从pyodbc.Row
对象获取列名。
# convert row to an object, assuming row variable contains query result
rowdict = { key[0]:value for (key, value) in zip(row.cursor_description, row) }
# loop through keys (equivalent to column names) and set class instance values
# assumes existing instance of class is variable classinstance
for column in rowdict.keys():
classinstance[column] = rowdict[column]
关于python - 将作为pyodbc游标的属性返回的所有字段追加到用户定义的数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10296175/