sqlite-запрос с strftime всегда возвращает None

У меня есть следующая функция:

for i in range(1,13): q_totes_1="""SELECT sum(kaxia) FROM es_data WHERE strftime('%%m',es_date)='%s' AND es_orig=1"""%(str(i)) self.cur.execute(q_totes_1) m_totes_1=self.cur.fetchone()[0] print q_totes_1 if m_totes_1 is None: m_totes_1=0.0 

Он всегда возвращает None, пока я знаю, что у меня должен быть другой результат. Из print q_totes_1 я получаю запрос, который я выполняю прямо на sqlite, и получаю желаемый результат. Все импортные данные верны, поскольку я уже успешно их использовал в других функциях того же класса.

Я попытался запустить аналогичный запрос без strftime('%%m',es_date)='%s' и он работает правильно.

Может кто-нибудь дать мне намек на то, что мне не хватает?

2 Solutions collect form web for “sqlite-запрос с strftime всегда возвращает None”

Измените его на

 self.cur.execute( """SELECT sum(kaxia) FROM es_data WHERE strftime('%m',es_date)= ? AND es_orig=1""",(str(i),) ) 

Ваш код будет

 for i in range(1,13): x = self.cur.execute( """SELECT sum(kaxia) FROM es_data WHERE strftime('%m',es_date)= ? AND es_orig=1""",(str(i),) ) m_totes_1=x.fetchone()[0] print q_totes_1 if m_totes_1 is None: m_totes_1=0.0 

Вы также являетесь жертвой SQL Injection. (Всегда используйте символ ? В БД)

введите описание изображения здесь

Наконец, я получил запрос выполнить, и к моему разочарованию это было досадно просто:

Запрос должен иметь этот формат (я склонен игнорировать возможность инъекций, поскольку единственное взаимодействие с БД будет через приложение python):

 SELECT sum(kaxia) FROM es_data WHERE strftime('%%m',es_date,'unixepoch')= '%s'AND es_orig=1"""%(str(i)) 

Отсутствие модификатора 'unixepoch' , казалось, 'unixepoch' результат значения None .

Большое спасибо всем, кто пытался помочь …

  • Использовать datetime.strftime () до 1900 года? («Требуется год> = 1900»)
  • Преобразование python datetime в эпоху с strftime
  • Отобразить диапазон дат, основанный на текущей дате, в Python
  • Преобразование строки timestamp unix в удобочитаемую дату в Python
  • Есть ли способ использовать функцию strftime как даты до 1900 года в Python?
  • Python strftime - дата без указания 0?
  • Преобразование строки во времени с помощью python
  • Преобразование строки в форматированную строку даты-времени с использованием Python
  •  
    Interesting Posts for Van-Lav

    Добавить пользовательские поля в Django REST Framework serializer

    Почему я не могу обработать KeyboardInterrupt в python?

    uncompyle6, повышающий ошибку синтаксического анализа при декомпиляции файла * .pyc

    Элегантные способы возврата нескольких значений из функции

    Как я могу программно изменить argspec функции в декораторе python?

    Можно ли создать шаблон регулярного выражения Python для соответствия и замены символов Unicode, отличных от ASCII?

    Форматирование Python 3 байта

    построение различных цветов в matplotlib

    Легкий способ проверить, находится ли каждый элемент в массиве numpy между двумя значениями?

    KDTree для долготы / широты

    функция в функции

    Итерировать классы, определенные в модуле, импортированном динамически

    Имя ipv6 dns не определено из сети ipv4

    Python PIL неправильно декодирует цвета TIFF (используя неправильное цветовое пространство)?

    Django – доступ к RequestContext из настраиваемого фильтра

    Python - лучший язык программирования в мире.