划分导致错误消息的SQL查询

时间:2016-11-02 15:34:16

标签: python sqlite

我正在创建两个单独的查询,然后尝试按area_water(第二个查询)划分area_land(第一个查询),并打印结果。

import sqlite3
conn = sqlite3.connect('factbook.db')
total_land = conn.execute('select sum(area_land) from facts;').fetchall()
total_water = conn.execute('select sum(area_water) from facts;').fetchall()
print(total_land/total_water)

这是我得到的错误:

  

TypeError:/:'list'和'list'

的不支持的操作数类型

我无法弄清楚我的错误在哪里

请帮忙

2 个答案:

答案 0 :(得分:1)

.fetchall()会返回rows列表。

您可以在返回的列表中引用该值:

total_land = conn.execute('select sum(area_land) from facts;').fetchall()[0][0]
total_water = conn.execute('select sum(area_water) from facts;').fetchall()[0][0]

您还可以使用.fetchone(),它只返回第一个匹配的行:

total_land = conn.execute('select sum(area_land) from facts;').fetchone()[0]
total_water = conn.execute('select sum(area_water) from facts;').fetchone()[0]

答案 1 :(得分:1)

这是我进行了一些研究之后的答案

import sqlite3
conn = sqlite3.connect('factbook.db')
total = conn.execute('select sum(area_land) / sum(area_water) from facts where (area_land != "") & (area_water != "");').fetchall()
print(total)

谢谢你给我的所有参考和解释(y)