擅长:python、mysql、java
<p>pyodbc允许我们使用<code>row.column_name</code>形式引用<code>pyodbc.Row</code>对象中的值,前提是列名是合法的Python标识符。例如,我们可以做一些类似的事情</p>
<pre class="lang-python prettyprint-override"><code>row = crsr.fetchone()
print(row.city)
</code></pre>
<p>打印“城市”列的值。不幸的是,<code>my-nr</code>不是一个合法的Python标识符,所以如果我们试图使用。。。在</p>
^{pr2}$
<p>。。。Python将其解析为“<code>row.my</code>减<code>nr</code>”,其中<code>row.my</code>将被解释为Row对象中的列,<code>nr</code>将被解释为Python变量。在</p>
<p>要解决此问题,我们可以获取列名称的列表,将这些名称与行值合并到字典中,然后引用字典中的值:</p>
<pre class="lang-python prettyprint-override"><code>crsr.execute(sql)
col_names = [x[0] for x in crsr.description]
row = crsr.fetchone()
row_as_dict = dict(zip(col_names, row))
print(row_as_dict['my-nr']) # no error
</code></pre>