Django SQLite3 db не распознает математическую функцию при вызове через сырой запрос - PullRequest
0 голосов
/ 27 января 2011

Я почти уверен, что пропустил какую-то глупую мелочь, но, тем не менее, это мешает мне идти дальше.Я получаю эту ошибку

"DatabaseError at / no такой функции: SQRT",

, и я получаю такую ​​ошибку в каждой математической функции, такой как мод и т. Д ... Итак, яЯ немного сбит с толку.У 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 ]

2 голосов
/ 27 января 2011

SQRT доступно в sqlite3 через расширение:

Эта библиотека будет предоставлять общие математические и строковые функции в SQL-запросы, использующие библиотеки операционной системы или предоставленные определения. Включает в себя следующие функции:

Математика: acos, asin, atan, atn2, atan2, acosh, asinh, atanh, разница, градусы, радианы, соз, грех, загар, койка, кош, синх, заг, кхот, опыт, log, log10, power, sign, sqrt , квадрат, ceil, пол, pi.

Обратите внимание, что механизм загрузки расширений может быть отключен по умолчанию (в целях безопасности - см. Тикет # 1863 ) - поэтому вам придется перекомпилировать sqlite3 из исходного кода. В дистрибутиве autoconf загрузка расширений включена по умолчанию.

0 голосов
/ 28 января 2011

Неважно. Скачал MySQLdb отсюда http://www.codegood.com/archives/129, установил и пока работает отлично. >. <Не совсем уверен, почему он дал ошибку раньше. Может быть, что-то не так с реестром или, может быть, скачал 32 бит для 64 битного питона =) </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...