首页 > 解决方案 > 为什么 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。计数不应该是一吗?

标签: sqlsqlite

解决方案


如果不存在表名,则使用创建表。即使表存在,如果表内没有行,fetchall 会给你 0 结果而不是 1


推荐阅读