我使用以下命令在Python 2.7中使用sqlite3读取数据库:
# Change to database directory
os.chdir(data)
# Find database file
cur_db = glob.glob('*.db')
# Connect to database
con = sqlite3.connect('database.db')
c = con.cursor()
# Query database
print(len(available_table))
for row in c.execute('SELECT * FROM col1 '):
print row
这给了我类似的东西:
(1, u'2.3', u'brown', u'0', u'hairy', u'banana', u'2', u'monkey')
我想查看值u'2.3'
大于2
的列中的值。但这是一个unicode字符串而不是数字,因此难以与数字进行比较(例如2
)。
理想情况下,我想要像:
# Connect to database
con = sqlite3.connect('database.db')
c = con.cursor()
# Query database
c.execute('SELECT * FROM critter WHERE weight > 2'.
问题:如何添加条件语句以仅提取此元素大于2
的数据行?我想保持数据库不变。
答案 0 :(得分:1)
编辑:哦,你想要一个查询来做...你可以这样做:
for row in c.execute('select * from critter where cast(weight as numeric) > 2'):
# do something
旧答案:
如果你想在Python端执行此操作,可以使用try-except结构,如下所示:
for row in c.execute('SELECT * FROM col1'):
try:
val = float(row[1]) # number here is the number of the element in the tuple
if val > 2:
print(val)
except ValueError:
pass