Инструкция SQLITE3 SELECT не возвращает данных - PullRequest
0 голосов
/ 07 июня 2019

У меня есть БД с двумя таблицами в SQLite3, использующая пакет sqlite3 в python. есть таблица «датчиков», которая описывает датчики (в настоящее время более 1000 датчиков) и таблица сенсорных данных, которая содержит данные датчиков с метками времени. Я пытаюсь получить сенсорную информацию для краткого списка датчиков в диапазоне дат. Когда я запускаю запрос в SQLiteStudio, я получаю около 1200 строк, но, работая на python, я получаю None для результата. Я копирую точную инструкцию SELECT из python в SQLiteStudio для сравнения.

Вот код 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

Вот результирующий оператор SELECT, который отлично работает в SQLiteStudio:

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 ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...