更改列SQLite3(Python)的数据类型

时间:2017-03-15 21:21:57

标签: database python-2.7 sqlite type-conversion

我使用以下命令在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的数据行?我想保持数据库不变。

1 个答案:

答案 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