Python3.10中使用sqlite3查询时提示‘no such function:SQRT’如何解决?
解决SQLite中SQRT函数不存在的问题
可能原因
你的SQLite版本(3.45.3)本身内置支持SQRT数学函数,但Python的sqlite3模块可能存在函数识别异常,或是查询语句存在拼写/格式问题。
解决方案
1. 检查查询语句的拼写与格式
确保SQRT拼写完全正确,避免多余空格或符号干扰:
- 正确示例:
SELECT SQRT(16) FROM your_table; - 规避错误:不要写成
SQRT (16)(部分环境对函数名与括号间的空格敏感)或拼写错误的SQRTT等。
2. 手动注册SQRT函数到sqlite3
若确认语句无误,可通过Python的math模块手动将SQRT函数注册到数据库连接中,代码示例:
import sqlite3 import math # 建立数据库连接 conn = sqlite3.connect('your_database.db') # 注册SQRT函数(参数1为函数名,参数2为接收的参数个数,参数3为对应的Python实现) conn.create_function('SQRT', 1, math.sqrt) # 执行查询 cursor = conn.cursor() cursor.execute("SELECT SQRT(25)") result = cursor.fetchone() print(result) # 关闭连接 conn.close()
3. 验证SQLite原生函数支持
可直接在SQLite命令行中执行SELECT SQRT(9);,若返回3.0则说明数据库本身支持该函数,问题出在Python的sqlite3模块适配环节。
内容的提问来源于stack exchange,提问作者winger Li
相关产品推荐
相关产品推荐

