sql - 为什么 fetchall 在 sqlite3 中不返回正确的行数?
问题描述
我在 Python 中创建了一个测试数据库和表:
conn = sqlite3.connect('embedding.db')
print("Opened database successfully")
# check whether the table exists
cursor = conn.execute('''SELECT name FROM sqlite_master WHERE type='table' AND name='{EMBEDDING}';''')
table_count = len(cursor.fetchall())
if table_count == 0:
conn.execute('''CREATE TABLE EMBEDDING
(ID VARCHAR(32) PRIMARY KEY NOT NULL,
bert TEXT NOT NULL);''')
print("Table created successfully")
conn.close()
如果表 'EMBEDDING' 不存在,我想创建表。但是,即使表已经存在,table_count 也会返回 0。计数不应该是一吗?
解决方案
如果不存在表名,则使用创建表。即使表存在,如果表内没有行,fetchall 会给你 0 结果而不是 1
推荐阅读
- php - 使用 phpSpreadSheet 在 excel 中合并
- typescript - 使用 FilterPredicate 和另一个函数过滤数据
- docker - 远程标记 docker 镜像
- pdf - 在 MediaWiki 中打开 PDF
- regex - 用于解析字符串的 Python 正则表达式
- javascript - 过滤数组以仅保留每个 ID 具有最新日期的元素
- rest - 使用球衣在飞行前请求后解析请求时出现异常
- spring-boot - Spring Boot gradle kotlin 构建
- javascript - 防止用户使用 JavaScript 输入小数
- apache-spark - 使用 SparkSession 创建一个具有指定架构的空 DataFrame 而不使用 SparkContext