我在SQLite3中有一个2表数据库,使用python中的SQLite3包。有一个描述传感器的“传感器”表(目前有1000多个传感器)和一个包含传感器时间戳数据的传感器数据表。我正在尝试获取一个日期范围内的传感器短列表的传感器数据。当我在SQLiteStudio中运行查询时,我得到大约1200行,但是在python中运行时,我没有得到任何结果。我在SQLiteStudio中复制python的SELECT语句进行比较。你知道吗
下面是一个方法的python代码,该方法应返回select语句的结果:
def selectSensorDataByPAID_Dates(self,ids,dateStrs=None):
"""Selects from the sensordata table using list of ids
and a 2-item list of dates (start,end)
Default for dates is full date range
"""
rtrn=None
if dateStrs==None:
dateStrs=['2000-06-16 08:34:06',str(datetime.datetime.now())]
if len(ids)<1:
return rtrn
idslst=",".join(map(str,ids))
slctStmnt="""SELECT sensordata.id as sdid, sensordata.datetime,
sensordata.PM2_5Value,
sensordata.temp_C,
sensordata.humidity,
sensordata.barom,
sensors.PA_id,sensors.id as snsrid,sensors.label
FROM sensordata
INNER JOIN sensors ON sensordata.sensors_id=sensors.id
WHERE (sensors.PA_id in ({}))
and sensordata.datetime > '{}'
and sensordata.datetime < '{}'
ORDER BY sensordata.datetime ASC, sensors.PA_id;
""".format(idslst,dateStrs[0],dateStrs[1])
try:
self.__crsr.execute(slctStmnt).fetchone()
except DatabaseError as err:
print(err)
except Error as err:
print(err)
return rtrn
下面是在SQLiteStudio中运行良好的SELECT语句:
SELECT sensordata.id as sdid, sensordata.datetime,
sensordata.PM2_5Value,
sensordata.temp_C,
sensordata.humidity,
sensordata.barom,
sensors.PA_id,sensors.id as snsrid,sensors.label
FROM sensordata
INNER JOIN sensors ON sensordata.sensors_id=sensors.id
WHERE (sensors.PA_id in (8942,24347))
and sensordata.datetime > '2000-06-16 08:34:06'
and sensordata.datetime < '2019-06-07 07:16:21.101885'
ORDER BY sensordata.datetime ASC, sensors.PA_id;
为什么我从Python和SQLiteStudio得到不同的结果??你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐