如何获取SQLite数据表列的默认值?查询返回空数组问题
问题原因与解决方案
你遇到的问题核心很清晰:表列的默认值是列的属性,只有当表中存在行数据时,未指定值的列才会自动填充默认值。你的TAXRatesDB表目前没有任何行,所以SELECT *返回空数组[]是完全正常的。
下面提供两种获取默认值的可行方法:
方法1:插入空行触发默认值填充
通过插入一行不指定任何列值的记录,数据库会自动用预设的默认值填充所有列,之后就能查询到目标值:
# 插入空行,所有列使用默认值 pC.execute("""INSERT INTO TAXRatesDB DEFAULT VALUES""") # 提交事务(SQLite必须执行此步骤才会将写入操作持久化) conn.commit() # 再次查询获取默认值 pC.execute("""SELECT * FROM TAXRatesDB""") taxrates = pC.fetchall() print(taxrates)
方法2:直接查询表元数据获取默认值
如果不想插入数据,可以通过数据库的系统元数据直接读取列的默认值(以SQLite为例,使用PRAGMA table_info命令):
# 查询表的列信息 pC.execute("PRAGMA table_info(TAXRatesDB)") column_info = pC.fetchall() # 提取列名与对应的默认值 default_values = {col[1]: col[4] for col in column_info} print(default_values)
执行后会返回类似这样的字典结果:
{'PROVrate': 0.02, 'UNIONrate': 0.05, 'LNRrate': 0.09, 'MEDICblrate': 0.02, 'MEDICabrate': 1600}
内容的提问来源于stack exchange,提问作者Jansen Lloyd Macabangun
相关产品推荐
相关产品推荐

