python - sqlite3 view() 打印空列表?
问题描述
我有 testtable() 函数,可以在必要时创建表并在一列中列出所有 PDF 文件名。但是,当我执行 view() 函数时,它会打印一个空列表。我是否遗漏了什么或只是以错误的方式解决这个问题?
import os, sys
import sqlite3
import csv
testdb = 'pdftestdir.db'
def testtable():
conn = sqlite3.connect(testdb)
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS test (name TEXT)')
path = os.listdir('/root/Desktop/PDF')
conn = sqlite3.connect(testdb)
cur = conn.cursor()
cur.execute('SELECT * FROM test')
exists = cur.fetchall()
for name in path:
if name.endswith('.pdf'):
if not exists:
cur.execute('INSERT INTO test VALUES (?)', (name,))
else:
pass
conn.commit()
conn.close()
def view():
conn = sqlite3.connect(testdb)
cur = conn.cursor()
cur.execute('SELECT * FROM test')
cur.fetchall()
rows = cur.fetchall()
conn.close()
print(rows)
解决方案
您在没有将返回值存储到变量的情况下进行了不必要的调用cur.fetchall()
,并且游标已经到达了该调用返回的行的末尾,因此第二次调用cur.fetchall()
它时不再有要返回的行。
您可以通过简单地删除冗余调用来解决此问题。
改变:
cur.fetchall()
rows = cur.fetchall()
至:
rows = cur.fetchall()
推荐阅读
- elasticsearch - 如果映射类型已被删除,为什么我必须将新文档放入嵌套 URI?
- c++ - 在 C++ 中编译时间浮点除以零
- pyspark - Hudi 分区和 upsert 不起作用
- ansible - Ansible:从库存中检索数据
- python - 将链表打印为矩阵形式
- python - 正则表达式没有用空格替换字符串
- amazon-eks - 为什么我的 ALB 无法将流量路由到 EKS 上的 Kubernetes 服务?
- amazon-web-services - 如何从 Lake Formation 创建 SageMaker 功能组
- javascript - JavaScript 中的 setTimeout(() => btn.click()) 和 btn.click() 有什么区别?
- arrays - 在创建由文本组成的 ndarray 时,有没有办法让 numpy 忽略 UnicodeEncode 错误?