if 'size' in request.GET:
if SIZE_RE.match(request.GET['size']):
thumbnail_opts['size'] = map(int, request.GET['size'].split('x'))
size = [int(i) for i in request.GET.get('size', '').split('x') if i.isnumeric()]
if len(size) == 2:
thumbnail_opts['size'] = size
вы зачем вообще про SO говорите, будто это имеет какое-то отношение к Тостеру?
now()
возвращает данные типа timestamp
, содержащие текущие дату и время - 13.06.2019 13:55:00. Если привести эти данные к типу date
, время будет отброшено - 13.06.2019. Теперь если преобразовать данные обратно к timestamp
, то получится текущая дата с нулевым временем - 13.06.2019 00:00:00. Прибавление к дате интервала это и делает. Кстати, вместо now()::date
должно сработать просто CURRENT_DATE
, но это уже вкусовщина. now()::date + interval '1 minute'
- полночь. select
s.url,
p.ip,
count(*) as times
from request_log as r
inner join sites as s
on r.site_id = s.id
inner join proxies as p
on r.proxy_id = p.id
where r.when between between now() - interval '24 hours' and now()
group by r.site_id, r.proxy_id
having times < s.max_request
order by times;
when
равному сегодняшнему дню, группировкой по site
и proxy
и агрегацией count
, получаете количество сделанных за сегодня запросов с каждого прокси к каждому сайту. Даже если адреса сайтов и прокси будут храниться в отдельных таблицах, можно использовать объединение. И можно сразу отфильтровать из выборки те сочетания, в которых количество запросов превышает необходимый уровень.