Посты с тэгом postgresql


Нескучные запросы с Django ORM Annotate и Query Expressions

Было когда-то время, когда ORM Django считалась очень милой, но абсолютно глупой. Хотя, возможность производить Annotate и Aggregate были в ней с незапамятных времён. А в версии 1.8 добавилась возможность применять функции базы данных внутри Query Expressions. И, разумеется, если начинающий джангист не испугался и дочитал вступление до этих строк, он может смело читать дальше: статья ориентирована именно на начинающих.


Некоторое время назад передо мной встала задача: выбрать из таблицы значения по пользователям. Причём, эти значения должны соответствовать определённому регулярному выражению. Но и это не конец условия: из выбранных выражений нужно вытащить substring. Опять же, по регулярке. Сделал я это довольно быстро, и захотелось поделиться опытом с тем, кто ещё не может применять Annotate и Query Expressions на практике


Читать дальше →


Как искать паттерны в биржевых данных и использовать их в торговле?

Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли.
Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения.
В статье есть несколько приятных бонусов в виде кода на Python — Вы сможете сами проанализировать любые (почти) биржевые данные (или значения индикаторов), запустить собственного торгового робота и проверить любую торговую стратегию.
Все условия и определения паттернов в статье приведены для примера, вы можете использовать любые критерии.
Читать дальше →



Генерация фиктивных данных с Elizabeth: Часть II


Ранее я уже публиковал статью о том, как генерировать фиктивные данные, при помощи Elizabeth — библиотеки для языка программирования Python. Статья, которую вы читаете является продолжением предыдущей, потому я не буду приводить основ работы с библиотекой. Если вы пропустили статью, поленились прочитать или просто не захотели, то, вероятно, захотите сейчас, ибо эта статья подразумевает, что читатель уже знаком с основами библиотеки. В этой части статьи, я буду говорить о том, каким образом организовывать генерацию фиктивных данных в собственных приложениях, расскажу о нескольких, на мой взгляд, полезных особенностях библиотеки. Примеров кода будет не много, но по сути.

Читать дальше →


[Из песочницы] Миллион строк в секунду из Postgres с помощью Python



asyncpg — новая Python open-source библиотека для работы с PostgreSQL. Она была написана с использованием syncio и Python 3.5. asyncpg — самый быстрый драйвер для работы с PostgreSQL среди похожих реализаций в на Python, NodeJS и Go.

Почему asyncpg?


Мы создаем EdgeDB — базу данных нового поколения, с PostgreSQL на бэкенде. Нам необходима высокая производительность, низкая задержка доступа и дополнительные возможности самого PostgreSQL.

Самый очевидный вариант – использовать psycopg2 — популярнейший драйвер Python для работы с PostgreSQL. У него отличное комьюнити, он стабильный и проверенный временем. Также есть aiopg, который реализует асинхронный интерфейс, поверх psycopg2. Тогда очевиден вопрос — зачем писать свой велосипед? Короткий ответ: производительность и поддержка возможностей PostgreSQL. Ниж


Django: Как быстро получить ненужные дубликаты в простом QuerySet


Всех приветствую!

Только что обнаружил интересный баг (баг с точки зрения человеческой логики, но не машины), и решил им поделиться с сообществом. Программирую на django уже довольно долго, но с таким поведением столкнулся впервые, так что, думаю, кому-нибудь да пригодится. Что ж, к делу!

Пусть у нас в коде есть такой примитивный кусок:
# views.py
ids = [5201, 5230, 5183, 5219, 5217, 5209, 5246, 5252, 5164, 5248, ...<и т.д.>...]
products = Product.objects.filter(id__in=ids)


Полученные товары про помощи пагинации выводятся на соответствующей страничке по 20 штук. Однажды звонит менеджер и говорит, что товар «прыгает» по страницам — сначала он был замечен на второй странице, а потом внезапно повторяется на пятой.

«Ха» — заявляем мы, ставим брейкпоинт после указанного блока кода и делаем print(products). Визуально и, для верности, циклом проверяем вывод — а там дубликатов нет!



Django: Как быстро получить ненужные дубликаты в простом QuerySet


Только что обнаружил интересный баг (баг с точки зрения человеческой логики, но не машины), и решил им поделиться с сообществом. Программирую на django уже довольно долго, но с таким поведением столкнулся впервые, так что, думаю, кому-нибудь да пригодится. Что ж, к делу!

Пусть у нас в коде есть такой примитивный кусок:

# views.py
ids = [5201, 5230, 5183, 5219, 5217, 5209, 5246, 5252, 5164, 5248, ...<и т.д.>...]
products = Product.objects.filter(id__in=ids)

Полученные товары про помощи пагинации выводятся на соответствующей страничке по 20 штук. Однажды звонит менеджер и говорит, что товар «прыгает» по страницам — сначала он был замечен на второй странице, а потом внезапно повторяется на пятой.

«Ха» — заявляем мы, ставим брейкпоинт после указанного блока кода и делаем print(products). Визуально и, для верности, циклом проверяем вывод — а там дубликатов нет!
В


Как подружить AWS Lambda и PostgreSQL


С недавних пор в сервисе AWS Lambda появилась нативная поддержка Python 2.7. Для тех, кто не в курсе, что такое AWS Lambda, отсылаю к статье на хабре. Основное преимущество использования сервиса — создание масштабируемой беcсерверной архитектуры. В данной статье я расскажу о способе подружить AWS Lambda и PostgreSQL.
Читать дальше →


DevConf 2015 — сформирована программа конференции



Крупнейшая конференция DevConf 2015 пройдет в эту пятницу в Москве (конгресс центр Измайлово Бета).
20 июня пройдут эксклюзивные мастер-классы: Sphinx 3.0, MySQL 5.7, Docker, cоздание мобильных игр и архитектуры социальной сети
62 докладчика — 7 потоков: Python, PHP, Ruby, Javascript, Storage, DevOps, Commonкаждый Веб-разработчик найдет что-то интересное для повышения своей квалификации!
Читать дальше →


Релиз Django 1.8




После почти целого года разработки, команда Django объявила о релизе Django 1.8.

Эта версия Django является релизом с долговременной поддержкой(LTS), это означает, что данный релиз будет поддерживаться примерно около 3-х лет.

Как всегда, много чего новенького, и это можно почитать в заметках к релизу.

Краткий список самого интересного..


[Перевод] JSONB запросы в PostgreSQL


Ранее я писал, как включить поддержку jsonb в postgres/psycopg2. Сегодня экспериментировал с тем, как запрашивать данные в колонках типа JSON.
На эту тему есть документация, но мне было не совсем понятно, как работают различные операции:

CREATE TABLE json_test (
  id serial primary key,
  data jsonb
);

INSERT INTO json_test (data) VALUES 
  ('{}'),
  ('{"a": 1}'),
  ('{"a": 2, "b": ["c", "d"]}'),
  ('{"a": 1, "b": {"c": "d", "e": true}}'),
  ('{"b": 2}');

Читать дальше →