python - 使用 strftime 的 sqlite 查询始终返回 None

标签 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
        if m_totes_1 is None:
            m_totes_1=0.0

它总是返回 None,而我知道我应该有另一个结果。从 print 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 注入(inject)的受害者。 (在数据库中始终使用 ? 符号)

enter image description here

关于python - 使用 strftime 的 sqlite 查询始终返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677751/

相关文章:

sql - 在时间 block 内获取不同的值

ios - ios 无法将镜像更新到 SQLite

python - 如何使用 python strptime 和 strftime 将 2017-02-09T09 :43:04. 216+1000 等日期时间格式转换为 09-Feb-2017?

python - 遍历 pandas 中的组以提取顶部

python - 在 jupyter notebook 的单元格中使用 sudo

python - Tornado 和 websocket python 连接的 WebSocketPayloadException

ruby-on-rails - 在 nil 对象上使用 strftime - 如何防止错误?

python - Worker进程运行时异常 "heroku local"

SQL:如何选择至少有 N 条评论的人?

python - 从一个 strftime 字符串中减去另一个字符串