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

问题描述 投票:1回答:1
c.execute("SELECT * FROM Entries WHERE CPU=CPU")
for i in range(3):
    print(c.fetchone())

返回:

('...', '...', '...', '...', '...', '...', '中央处理器', '...', '.. 。','...','...','...','...','...','...','...','...' ,'...','...') ('...','...','...','...','...','...','TEST','...','.. 。','...','...','...','...','...','...','...','...' ,'...','...') ('...','...','...','...','...','...','TEST','...','.. 。','...','...','...','...','...','...','...','...' ,'...','...')

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

python database python-3.x sqlite
1个回答
3
投票

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

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

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

我希望这证明是有用的。

© www.soinside.com 2019 - 2024. All rights reserved.