Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 查询之间的SQlite工作不正常_Python_Sql_Sqlite_Tkinter - Fatal编程技术网

Python 查询之间的SQlite工作不正常

Python 查询之间的SQlite工作不正常,python,sql,sqlite,tkinter,Python,Sql,Sqlite,Tkinter,创建一个桌面应用程序来计算学生的分数,这样每个学生的分数都有一个日期列,这样我就可以使用Tkinter的日历计算两个日期之间的总数 query = "SELECT SUM (scores) FROM sscores WHERE acttype = ? AND sid = ? AND ssub = ? AND sdate BETWEEN '"+ ft1.get() +"

创建一个桌面应用程序来计算学生的分数,这样每个学生的分数都有一个日期列,这样我就可以使用Tkinter的日历计算两个日期之间的总数

query = "SELECT SUM (scores) 
         FROM sscores 
         WHERE acttype = ? 
         AND sid = ? 
         AND ssub = ? 
         AND sdate BETWEEN '"+ ft1.get() +"' AND '"+ft2.get()+"'"
        
c.execute(query, (sact1, stuid, f1.get()))
由于某种原因,当我在一月份之前查询时,它没有给出任何查询结果,即使我输入的唯一分数是在一月份。
当我选择1月之前的日期和1月之后的日期时,将不会有查询结果。但是,如果我选择1月期间的日期和1月之后的日期,则会给出正确的查询结果。奇怪的是,即使我在给出正确的查询结果之前选择了一个1月份的日期,但当我选择1月份之前的任何一个月份时,它什么也没有给我。根据我的理解,选择1月之前的一个月和选择一个月仍然意味着分数的日期介于两者之间,但这不会导致正确的日期。

只是一个建议,您可以对所有值使用参数,并避免字符串串联来构建sql代码

query = "SELECT SUM (scores) 
             FROM sscores 
             WHERE acttype = ? 
             AND sid = ? 
             AND ssub = ? 
             AND sdate BETWEEN ? AND ? "
    
c.execute(query, (sact1, stuid, f1.get(), ft1.get() , ft2.get()))

无论如何,请确保execute调用中的值和数据类型的正确匹配顺序,以及每个变量的有效内容。

看起来像字符串类型,而不是日期类型比较。PS.Unrelated tag已删除。是的,日期显示为str而不是date。我得想办法把它转换成日期类型