1

私はこれらの行に沿ったコードを持っています:

classinstance.col1 = queryresult.col1
classinstance.col2 = queryresult.col2
classinstance.col3 = queryresult.col3
classinstance.col4 = queryresult.col4

に変数を追加し、変数と同じ名前classinstanceの列の値を割り当てます。queryresult

コードをもう少し柔軟にして、列を名前で識別する必要がないようにしたいと考えています。この目的のために、各列を個別に処理するのではなく、すべての列をループする方法があるかどうか疑問に思っていました。このようなもの (これは実際のコードではなく疑似コードです。実際にどのように見えるべきかわからないためです):

for each var in vars(queryresult):
    classinstance.(var.name) = var.value

これは可能ですか?それには何が必要ですか?私の側に根本的な誤解がありますか?

4

1 に答える 1

1

次の例の結果には 1 行しかないと想定しています (ここのコメントの助けを借りて構築されています)。ここでの重要なコンポーネントは、オブジェクト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]
于 2012-05-21T14:07:11.937 に答える