为什么我在fetchone()为什么在SQLite中编写时得到的值不正确?

时间:2017-12-20 22:26:38

标签: python database python-3.x sqlite

c.execute("SELECT * FROM Entries WHERE CPU=CPU")
for i in range(3):
    print(c.fetchone())

返回:

  

('...','...','...','...','...','...','CPU','......', '...','...','...','...','...','...','...','...','。 ..','...','...')
  ('...','...','...','...','...','...','TEST','...','.. 。','...','...','...','...','...','...','...','...' ,'......','......')
  ('...','...','...','...','...','...','TEST','...','.. 。','...','...','...','...','...','...','...','...' ,'...','...')

我不明白为什么当CPU不等于CPU时,为什么我得到最后两行......

1 个答案:

答案 0 :(得分:3)

CPU=CPU就是问题所在。这是因为SQL中的非null 列始终等于它自己。因此,您的查询将返回CPU列中没有空值的表中的所有内容。

修复方法是将字符串'CPU'包装在所需的引号周围,如下所示:

c.execute("SELECT * FROM Entries WHERE CPU='CPU'")
for i in range(3):
    print(c.fetchone())

我希望这证明有用。