fetchall()对某些记录不起作用

2024-10-01 00:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据存储在SQLite数据库和一个Python程序中,用来检索它们。用户输入两个日期(例如2010年1月1日-2013年1月1日),程序应对2010年1月1日至2013年1月1日的数据进行分析。 代码检索数据的方式如下:

con = lite.connect("data.db")
cur = con.cursor()

cur.execute('SELECT ROWID from Table WHERE Date IS "01/01/2010"')
rowDate1 = cur.fetchall()

cur.execute('SELECT ROWID from Table WHERE Date IS "01/01/2013"')
rowDate2 = cur.fetchall()

这两个变量rowDate1rowDate2是用于执行SQL语句的次极端和高级极端,该语句将返回Python程序中使用的值。 基本上,如果我想对01/01/2010-01/01/2013运行分析,变量rowDate1和{}将包含用于数据检索的行id。在

因此,直到某个日期,特别是2010年1月1日,变量rowDate1返回rowID编号,并给出以下示例输出:

^{pr2}$

但是,在2010年1月1日之后,cur.fetchall()的返回是空的:rowDate1 = [] 我把数据检入数据库,它们存在,它们的rowID和其他的完全一样。 此外,如果数据不存在,那么即使变量rowDate2也应该返回一个空值,事实并非如此。 事实上,如果我执行:

cur.execute('SELECT ROWID from Table WHERE Date IS "01/01/2012"')
rowDate1 = cur.fetchall()
rowDate2 = cur.fetchall()
print rowDate1, rowDate2 

我将得到以下输出:

[] [(6002,)]

我知道,这很荒谬,但我真的不明白这怎么会发生。 我担心这是一个错误的代码,我真的不知道。有没有人知道我如何移动来检测它,它依赖于什么?在

注意:关于代码的其余部分,我实在没什么可以发表的。完全相同的语句适用于变量rowDate2的属性,而不是变量{};我的意思是,如果我从GUI输入日期框“01/01/2012-01/01/2012”,变量rowDate1不会有值,而变量rowDate2会有值。但是很奇怪,因为它们是相同的语句,只是rowDate1在之前被执行!?在

完整代码

con = None  
con = lite.connect(dPath.adresseBDD + '/' + symb + '.db')                 
cur = con.cursor()    

cur.execute('SELECT ROWID from ' + frequence + ' WHERE Date IS "' + date1+'"' )                 
rowDate1= cur.fetchall() 

cur.execute('SELECT ROWID from ' + frequence + ' WHERE Date IS "' + date2+'"' ) 
rowDate2= cur.fetchall() 

Tags: 数据代码fromexecutedateis语句where