Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有strftime的sqlite查询始终返回None_Python_Sqlite_Strftime - Fatal编程技术网

Python 带有strftime的sqlite查询始终返回None

Python 带有strftime的sqlite查询始终返回None,python,sqlite,strftime,Python,Sqlite,Strftime,我有以下功能: 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

我有以下功能:

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。从打印的q_totes_1中,我得到了在sqlite上直接执行的查询,并得到了所需的结果。所有导入都是正确的,因为我已经在同一类的其他函数中成功地使用了它们

我尝试在没有strftime“%%m”、es_date='%s”部分的情况下运行类似的查询,结果它运行正常

有人能给我一点提示我错过了什么吗?

把它改成

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注入的受害者。总是用吗?DBs中的符号


最后,我得到了要执行的查询,但令我失望的是,它非常简单:

查询应该采用这种格式,我倾向于忽略注入的可能性,因为与DB的唯一交互将是通过python应用程序:

SELECT sum(kaxia) FROM es_data WHERE strftime('%%m',es_date,'unixepoch')= '%s'AND es_orig=1"""%(str(i))
缺少“unixepoch”修饰符似乎会输出无值结果


非常感谢所有试图帮助……的人。

你所说的“总是一无所获”是什么意思?您是否将此代码定义为函数?@Kasra m_totes_1为无;我也尝试了self.cur.fetchall,但没有得到任何结果,@Filippos使用单个%并检查@Bhargav Rao I get ValueError:索引处不支持的格式字符“m”0x6d48@Filippos最终从es_数据中选择sumkaxia,其中strftime%%m',es_date=?和es_orig=1,stri,复制并粘贴到我的代码中。仍然获取的操作参数必须是str或unicodeSo我的代码现在看起来像self.cur.execute从es_数据中选择sumkaxia,其中strftime“%m”,es_date=?并且es_orig=1,stri,print q_totes_1 m_totes_1=self.cur.fetchone[0]print m_totes_1,但仍然print m_totes_1输出无再次输出为无。我知道strftime有些问题,因为我的初始代码在没有它的情况下运行平稳…@Filippos你确定它必须返回一些东西吗?或者数据库中没有数据。我已经检查了查询,它适用于meSo我的代码现在看起来像:对于范围1,13中的I:x=self.cur.execute从es_数据中选择sumkaxia,其中strftime“%m”,es_date=?和es_orig=1,stri,对于x中的i:print i m_totes_1=x.fetchone[0]print m_totes_1,如果m_totes_1为None:m_totes_1=0.0,结果为TypeError:“NoneType”对象没有属性“\u getitem_u”None,。抱歉,在评论中格式化没有什么帮助。接受正确答案,并将此问题标记为已回答