Получение всех значений из списка, который не имеет сегодняшнюю дату в Python - PullRequest
0 голосов
/ 28 июня 2018

Я подключаюсь к базе данных и получаю список камер и их соответствующие идентификаторы. Затем я просматриваю этот список и получаю текущее время этих изображений, которые были в последний раз сняты. Я хочу найти все камеры и их соответствующие идентификаторы, которые не были сняты на сегодняшнюю дату только (2018-06-28).

import psycopg2
import os
import datetime

DATABASE_URL = os.environ['DATABASE_URL']
conn = psycopg2.connect(DATABASE_URL, sslmode='allow').cursor()

all_cameras_query = "SELECT cameraid, name, url, latitude, longitude FROM cameras ORDER BY cameraid"
conn.execute(all_cameras_query)
all_cameras = conn.fetchall()

current_date = datetime.datetime.today().strftime('%Y-%m-%d')

last_updated_list = []

for camera in all_cameras:
    last_updated_query = "SELECT cameraid, curr_time FROM images WHERE cameraid=%d ORDER BY curr_time DESC" % (
        camera[0])
    conn.execute(last_updated_query)
    last_updated_list.append(conn.fetchall())


print(last_updated_list)

last_updated_list распечатывает список каждой камеры и последний отснятый момент. Теперь, используя списки Python и поиск, я хотел бы использовать current_date, чтобы получить все камеры, которые не с сегодняшнего дня.

[(185, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(186, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(187, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(188, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(189, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(190, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(191, datetime.datetime(2018, 6, 28, 10, 1, 27))], [(192, datetime.datetime(2018, 6, 28, 10, 1, 28))], [(193, datetime.datetime(2018, 6, 28, 10, 1, 28))], [(194, datetime.datetime(2018, 6, 28, 10, 1, 28))], [(195, datetime.datetime(2018, 6, 28, 10, 1, 29))], [(196, datetime.datetime(2018, 6, 28, 10, 1, 29))], [(197, datetime.datetime(2018, 6, 28, 10, 1, 29))], [(198, datetime.datetime(2018, 6, 28, 10, 1, 29))], [(199, datetime.datetime(2018, 6, 28, 10, 1, 29))], [(200, datetime.datetime(2018, 6, 28, 10, 1, 29))], [(201, datetime.datetime(2018, 6, 28, 10, 1, 29))]]

Я не слишком уверен, как использовать этот список и манипулировать им, чтобы получить эти идентификаторы камеры и даты, которые я хочу.

1 Ответ

0 голосов
/ 28 июня 2018

Определите сегодняшнюю дату как

import datetime
today = datetime.date.today()

Затем переберите список и сохраните в новом списке все элементы, которые не относятся к сегодняшнему дню.

new_list = [it for it in last_updated_list if it[0][1].date() != today]

В вашем примере все предметы с сегодняшнего дня, так что в результате вы получите пустой список

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