
Zart
23.06.2016
14:54:28
хотя для пре-2.5 придется поебаццо чуток
старые версии либ удаляют с инетов 8(
я вон дистриба джанги 1.0 найти не могу уже

Alexey
23.06.2016
14:57:37

Google

Zart
23.06.2016
14:57:55

Alexey
23.06.2016
14:58:13
Быть то было, но когда.

Zart
23.06.2016
15:44:37
однажды лебедь щуку раком...

Марк
23.06.2016
16:11:03
Метаклассы
Хотя не уверен

Johnnie
23.06.2016
16:25:52
подскажите, плз, как лучше делать?
1. создать класс-помощник по работе с sqlite3, объявить его 1 раз и дергать по мере необходимости. в этом случае я так понимаю соединение всегда открыто, пока программа работает
2. при каждой необходимости создавать экземпляр этого класса

Zart
23.06.2016
16:27:21
1. берешь СА
2. радуешься
sqlite3 - одна из дбапи либ
она обязана предоставлять определенный апи - курсоры, выполнение запросов и управление транзакциями
при этом дается свобода маневра в определенных вещах - разные стили передачи параметров, работа с типами и юникодом
в алхимии же эти самые классы от дпапи либ оборачиваются в классы-обертки, которые приводят это к более общему знаменателю
плюс реализация коннект пула (с различными стратегиями реализации)

Pavel
23.06.2016
16:34:18
/stat@comstatbot

Combot
23.06.2016
16:34:18
combot.org/chat/-1001051329193

Alex
23.06.2016
16:34:54
я на последнем месте :^)

Google

Johnnie
23.06.2016
16:38:40

Zart
23.06.2016
16:39:07
sqlalchemy.org

Johnnie
23.06.2016
16:40:18
а.. ну ее я видел, просто на 2 таблички суммарно на 10 полей есть ли смысл ее тащить-то?

Zart
23.06.2016
16:41:13
а смысл писать прокладку тогда?
рисуй курсоры напрямую

Johnnie
23.06.2016
16:42:10
т.е. второй вариант?

Zart
23.06.2016
16:42:39
похоже

Johnnie
23.06.2016
16:45:58
??

Kill me pls
23.06.2016
17:19:48

Johnnie
23.06.2016
17:22:43

Jonh
23.06.2016
19:19:23
Мда уж, пока в основном чате разводят флуд, повторю здесь
Кто как организует хранение и обновление токенов в либах для всяких апишек?
Я использую такую схему: в конструктор класса библиотеки передаю объект с геттером\сеттером для поля "token" и в этом объекте реализую механизм хранения (файл, бд и т.д).
Для каждой либы приходится велосипедить декоратор для обновления токена, если он сход, по эксцепшену.
Какие очевидные косяки видите в таком подходе?

Alexey
23.06.2016
19:20:21
Слишком долго с телефона, но вкратце - ты мешаешь все в одну кучу.

Zart
23.06.2016
19:21:03
это не декоратор, а адаптер выходит

Jonh
23.06.2016
19:24:02
это не декоратор, а адаптер выходит
Не, это свой вариант retry, я им методы оборачиваю, которые в апи стучат. Использовал бы redo, но мне не подходит в силу некоторых причин, по-хорошему это надо в отдельную либу вынести.

Alexey
23.06.2016
19:25:19

Jonh
23.06.2016
19:25:59
Или может я не о том думаю

Google

Zart
23.06.2016
20:05:03
пилинт брутален и анален....

Alex
24.06.2016
03:47:17
как это адекватно вообще запилить?
питон 3.5

Dim
24.06.2016
04:52:11
counter = { x['cid']:{'msgs':0 , 'usrs':0} for x in cids_list }
for ccid in counter.keys():
counter[ccid]['msgs'] = sum( [a['msg_count'] for a in cids_list if a['cid'] == ccid] )
counter[ccid]['usrs'] = sum( [a['users_count'] for a in cids_list if a['cid'] == ccid] )
[print(x) for x in counter.items()]

Alex
24.06.2016
04:55:18
Ооо
Спасибо

.
24.06.2016
05:02:26
гайз есть какие-нибудь курсы по SQL наподобие codecademy, чтобы так же удобно было, но только материала больше

Pavel
24.06.2016
05:40:05
на stepic есть курс по mysql
https://stepic.org/course/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-%D0%B1%D0%B0%D0%B7%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-551/syllabus

.
24.06.2016
06:26:34
Благодарю

Zart
24.06.2016
06:44:13
"for ccid in counter.keys():" не надо так делать

Alex
24.06.2016
06:49:44
а как надо?

Zart
24.06.2016
06:50:14
для перебора ключей в дикте просто for key in somedict:

Sergey
24.06.2016
06:56:07
с defaultdict, кажется, было бы поприятнее

Zart
24.06.2016
06:56:27
угу
можно без дефолтдикта через counter[cid] = counter.setdefault(cid, 0) + x_count

Sergey
24.06.2016
07:03:10
Скорее get, все равно ключ переписываем - лишняя вставка не нужна

Cykooz
24.06.2016
07:03:14
А есть ещё collections.Counter

Sergey
24.06.2016
07:03:30
Что за привычка, кстати, входные данные в виде картинки класть?

Zart
24.06.2016
07:04:14

Google

Cykooz
24.06.2016
07:04:24

Zart
24.06.2016
07:05:00
это дефолтдикт(инт) же

Cykooz
24.06.2016
07:05:24

Admin
ERROR: S client not available

Zart
24.06.2016
07:06:20
>>> from collections import Counter
>>> c = Counter()
>>> c['foo'] += 10
>>> c
Counter({'foo': 10})
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> d['foo'] += 10
>>> d
defaultdict(<type 'int'>, {'foo': 10})
если суммировать самому, то от каунтера толку никакого

Cykooz
24.06.2016
07:07:17
Counter просто короче пишется, и как то понятнее

Zart
24.06.2016
07:07:49
главная фича каунтера - метод апдейт имхо...
>>> l
[{'msg_count': 1, 'users_count': 1, 'cid': 1}, {'msg_count': 1, 'users_count': 1, 'cid': 1}, {'msg_count': 1, 'users_count': 1, 'cid': 1}, {'msg_count': 2, 'users_count': 0, 'cid': 2}]
>>> msg_count, users_count = defaultdict(int), defaultdict(int)
>>> for item in l:
... msg_count[item['cid']] += item['msg_count']
... users_count[item['cid']] += item['users_count']
...
>>> msg_count, users_count
(defaultdict(<type 'int'>, {1: 3, 2: 2}), defaultdict(<type 'int'>, {1: 3, 2: 0}))

Sergey
24.06.2016
07:30:37

Zart
24.06.2016
07:32:50
эту задачку можно решить функционально через itertools.groupby, sum и operator.itemgetter. результат правда громоздкий выйдет

Alex
24.06.2016
07:33:37
а по быстродействию что вообще быстрее выйдет?
И спасибо за помощь всем

Zart
24.06.2016
07:34:00
вариант с дефолтдиктом имхо

[Anonymous]
24.06.2016
09:06:09
Кто-нибудь работал с API вк? Есть одна проблема: апи возвращает дату как 1465844495, как мне преобразовать это число в datetime объект?

Alex
24.06.2016
09:07:08
http://stackoverflow.com/questions/3682748/converting-unix-timestamp-string-to-readable-date-in-python

[Anonymous]
24.06.2016
09:10:44
Работает, спасибо

Zart
24.06.2016
10:02:40
половина вопросов связана с социалочками... вк и телеботы

Sergey
24.06.2016
10:03:48

.
24.06.2016
10:03:50
просто документация вк апи отвратно оформлена

Google

Sergey
24.06.2016
10:04:13

.
24.06.2016
10:04:54
про execute очень мало информации

Sergey
24.06.2016
10:06:01
про execute очень мало информации
это да. для людей далёких от этого с первого раза ничерта не поймёшь. вот тут есть серия статей про execute - http://trianglesis.org.ua/vk-execute

.
24.06.2016
10:07:02
Месяц назад писал прогу, потестит, вроде все хорошо работало, недавно запустил и получил ошибку авторизации(токен брал бессрочный)
Спасибо про execute, почитаю

Sergey
24.06.2016
10:07:49

Zart
24.06.2016
10:07:55
это вы вк приложения рисуете или куда?

Sergey
24.06.2016
10:08:07

.
24.06.2016
10:08:53
я просто балуюсь api

Sergey
24.06.2016
10:09:04
ну и скорее не приложение для ВК, а скрипт, работающий с ВК Api
я просто балуюсь api
я плотненько с ним играюсь, так как есть ряд SMM задач, которые без программирования не решить.

.
24.06.2016
10:13:55
Сделал пару простых скриптов, потом захотелось реализовать поиск в глубину по друзьям, тут без execute не обойтись, но теперь появилась надежда осилить

Sergey
24.06.2016
10:40:37

Kill me pls
24.06.2016
11:01:48
В голос
Эта группа больше не существует