当通过原始查询调用时,Django SQLite3 db无法识别数学函数

时间:2011-01-27 16:21:22

标签: database django sqlite

我很确定我错过了一些愚蠢的小事,但它让我无法继续前进。我收到此错误

  

“DatabaseError at / no此类函数:SQRT”,

我在mod等所有数学函数上都出现了这样的错误......所以我有点困惑。 sqlite3没有数学函数,我觉得这有点荒谬,或者我只是愚蠢的O_O

def check_difference(self):
    cursor = connection.cursor()   
    cursor.execute("SELECT t1.id, COUNT(t1.id) AS rep, MAX(t3.right_key) AS max_right \
                    FROM cms_Book AS t1, cms_Book AS t2, cms_Book AS t3\
                    WHERE t1.left_key <> t2.left_key \
                    AND t1.left_key <> t2.right_key \
                    AND t1.right_key <> t2.left_key \
                    AND t1.right_key <> t2.right_key \
                    GROUP BY t1.id \
                    HAVING max_right <> SQRT(4 * rep + 1) + 1 ")
    q = cursor.fetchall()
    return q

2 个答案:

答案 0 :(得分:2)

SQRT在sqlite3中通过扩展程序提供:

  

该库将提供常见的数学和字符串函数   使用操作系统库或提供的SQL查询   定义。它包括以下功能:

     

数学:acos,asin,atan,atn2,atan2,acosh,asinh,atanh,difference,   度,弧度,cos,罪,棕褐色,婴儿床,cosh,sinh,tanh,coth,exp,   log,log10,power,sign, sqrt ,square,ceil,floor,pi。

请注意,默认情况下,扩展加载机制可能已关闭(出于安全原因 - 请参阅ticket #1863) - 因此您需要从源代码重新编译sqlite3。在 autoconf 分发中,默认情况下启用扩展加载。

答案 1 :(得分:0)

没关系。从这里下载MySQLdb http://www.codegood.com/archives/129,已安装,到目前为止工作正常。 &GT;。&LT;不确定为什么它之前给出了错误。也许有些注册表错误或者64位python下载了32位。 =)