擅长:python、mysql、java
<p>问题是您没有创建<code>dict</code>,而是创建了<code>list</code>行,其中每个元素都是<code>dict</code>。在</p>
<p>所以,只打印第一行的<code>hostname</code>:</p>
<pre><code>print config_params[0]['hostname']
</code></pre>
<p>或者,要打印每行的主机名:</p>
^{pr2}$
<p>…或者,如果您愿意:</p>
<pre><code>print '\n'.join(row['hostname'] for row in config_params)
</code></pre>
<hr/>
<p>同时,如果一开始只需要一行,只需使用<code>fetchone</code>而不是在<code>fetchall</code>上循环:</p>
<pre><code>row = cur.fetchone()
config_params = dict(
hostname=row[0], syslocation=row[1],
ipaddress=socket.inet_ntoa(struct.pack('!L', row[2])),
netmask=socket.inet_ntoa(struct.pack('!L', row[3])),
username=row[4], password=row[5], bri1=row[6], bri2=row[7],
bri3=row[8], bri4=row[9])
</code></pre>
<p>现在你得到了一个<code>dict</code>。在</p>
<hr/>
<p>还值得注意的是,许多数据库库为每一行提供了一种自动创建dict的方法,使用列名作为键,或者使用更高级的方法。例如,使用<code>sqlite3</code>:</p>
<pre><code>con = sqlite3.connect(dbpath, factory=sqlite3.Row)
cur = con.execute('SELECT * FROM Config')
config_params = cur.fetchone()
print config_params['hostname']
</code></pre>