为什么我的sqlite3查询返回空行?

时间:2017-07-20 13:40:28

标签: python sqlite

我知道我必须在这里犯一个愚蠢的错误......

            checksum = self.hashItem(os.path.join(root, filename))
            print checksum
            query = 'SELECT * FROM tracked_file WHERE md5 = ?'
            self.con.execute(query, [str(checksum)])
            results = self.cur.fetchall()
            print results

这是表结构

'CREATE TABLE if not exists tracked_file (filename TEXT, filepath TEXT, date_created TEXT, date_modified TEXT, file_size INTEGER, sha1 TEXT, md5 TEXT, catalog_date TEXT, archive_date TEXT);'

并且脚本的输出显示我可以在表中手动验证的md5值。

48f3dd221a0cb5284c678b3aff24d668 [] ff12917ca9ec1cf8bc913efdf7f3ade7 [] 7b5cf763ef1a75eceb0bb960421a3ec2 [] 390228bde6440ed38f45dbf8ea09d860 [] c10e728e60e580b0eb97c3ab705b8fb9

1 个答案:

答案 0 :(得分:2)

您正在针对连接运行查询:

self.con.execute(query, [str(checksum)])

但是试图从光标中获得结果:

results = self.cur.fetchall()

连接的execute方法创建了一个中间游标来运行SQL,但这不会是你在self.cur <中创建和存储的游标。 / p>

尝试:

self.cur.execute(query, [str(checksum)])
results = self.cur.fetchall()