orbis

Рейтинг
3
Регистрация
09.04.2018

Я им пользовался, в итоге пришлось назначить на сайте дефолтной другую ветку, первую удалить и запушить снова. Еще пришлось перед этим локальный репозиторий скопировать и снова зарегистрировать в git.

Скажите пожалуйста, а если я делаю тестовое задание и там не указано какую бд использовать, можно ли оставить SQLite, если это парсер серверных логов?

---------- Добавлено 12.04.2018 в 11:25 ----------

У меня admin переадресовывается на admin/login, поэтому не понимаю, что Вы имели в виду.

Сделал +=, оно не работает. А старое работает.

И хочу узнать, правильно ли я понимаю, что в записи

path(r'', include('parsercore.urls', namespace='search')),

слово search означает первое слово search в записи

url(r'^search/', views.ResultView.as_view(), name='search'),

то есть namespace - это указатель на регулярное выражение?

Я исправил urls. Они работают, но теперь не понимаю, почему они работают.

urlpatterns = [ path(r'admin/', admin.site.urls),

path(r'', include('parsercore.urls', namespace='search')),

]

urlpatterns = [ url(r'^$', views.IndexView.as_view(), name='index'),

url(r'^search/', views.ResultView.as_view(), name='search'),

url(r'^show/', views.ResultView.as_view(), name='show'),

]

postgres через консоль запускается командой psql и сразу требует пароль. Его я не знаю. Как сбросить пароль?

Я попробовал. Такая же ошибка.

У меня есть модели. Я сначала на SQLite сделал.

да, я создал базу с таким именем. urls позже исправлю. А можно подробнее про то, что Вы написали про schema? Пожалуйста ссылкой или подробнее, чтобы знать, что гуглить.

Я попробовал сделать values(param1).annotate(param2), но вместо GROUP_BY происходит фильтрация, и подсчет доступен только для строк по отдельности, как будто values() не написано.

result = Entries.objects.values('remote_host').annotate(remote_host_count=Count('remote_host'),

method_count=Count('method'),

bytes_sum=Sum('bytes_returned'))

В браузере вместо таблицы со всеми параметрами запроса только IP адреса, то есть остальные пустые. В консоли

print(result[1])

{'remote_host': '46.72.177.4', 'remote_host_count': 18, 'method_count': 18, 'bytes_sum': 78813}

Можно ли сделать вот так:

result = Entries.objects.all().annotate(Entries.objects.values('method').annotate(method_count=Count('method')))

---------- Добавлено 11.04.2018 в 12:15 ----------

Я уже разобрался с предыдущим вопросом. теперь я думаю как сделать сортировку списка словарей в QuerySet.

Все это выглядит вот так:

<QuerySet [{'method': 'GET', 'method_count': 96, 'bytes_sum': 409248}, {'method': 'POST', 'method_count': 96, 'bytes_sum': 431424}]>

Надо сделать сортировку по значению ключа bytes_sum по убыванию. Сортировать словари в списках я умею, а как сделать в QuerySet?

Я посмотрел, про аннотацию и агрегацию, возник вопрос. Если я хочу сосчитать уникальные IP, пересчитать все методы и их количество по именам, сумму байтов ответа по всем запросам, могу ли я сделать это одним запросом? Пока я нашел только такое:

.values('IP').annotate(Sum('ip'))

А хочется увидеть такое:

.values([fields_list]).annotate(Sum('ip'), Sum('method_get'), Sum('method_post'))

Как это сделать?

Спасибо за совет. А с каким из этих инструментов можно наиболее быстро и просто стартануть?