SQLITE3 SELECT语句不返回d

2024-04-19 18:44:11 发布

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

我在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得到不同的结果??你知道吗


Tags: andnoneididsdatetimeas传感器语句