Рубрики
Без рубрики

Jupyter ноутбуки + IBMI

Вызов IBMI от Jupyter. Теги с Jupyter, Python, IBM I, SQL.

Это будет короткий пост при вызове основных утверждений IBMI DB2 от ноутбуков Jupyter. Это действительно свет на объяснение, поэтому я поощряю Googling Условия, с которыми вы не знакомы.

Красивое введение в Jupyter

Jupyter предоставляет среду для выполнения текущего кода в ноутбуке, как формат. Я считаю, что это особенно полезно для хранения «живых заметков» для математических и производственных нот поддержки.

Ноутбук состоит из клеток, которые позволяют смешивать и совпадать с SQL, Markdown, Python, JavaScript и многое другое в том же ноутбуке.

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

Это действительно основной пример, но вы можете получить полную мощность Pandas, Numpy, MatPlotlib и т. Д. Для создания каких-либо прохладных визуализации данных. Я не буду покрывать это, потому что я довольно новых для этих модулей еще.

Ноутбуки можно легко поделиться другим разработчикам. Когда ноутбук предан репозиторию, он включает в себя все вывод для каждой ячейки (если они были выполнены). Итак, в репозитории GitHub вы можете предпросмотреть ноутбук заморожен вовремя. Это довольно аккуратно, вы скоро увидите несколько прохладных вещей.

Я призываю вас выйти и читать больше на ноутбуках Jupyter.

Настраивать

  • Установка зависимостей – PIP3 Установить Jupyter Pandas Matplotlib numpy pyodbc (PyODBC для моего примера IBMI)
  • Начните Jupyter Server – Jupyter Notebook

  • Размещены локально в http://localhost: 8888/ноутбуки по умолчанию

Почему pyodbc?

Итак, я сделал этот пост, потому что позвонинг IBMI – это немного в фанк, чтобы сделать из Python и Jupyter. Большинство примеров SQL Jupyter вы столкнетесь с использованием модуля Python под названием SQL Alchemy. Этот модуль предоставляет некоторые удобные функции для взаимодействия с базой данных.

Драйвер для доступа к IBMI не работает с SQL Alchemy. В прогрессе есть репозиторий, чтобы заставить его работать, но я еще не думаю, что это готов – https://github.com/ibm/sqlalchemy-ibmi.

Но это нормально, мы все еще можем использовать Pyodbc. модуль. Я не пойду в полный пример, но вот ссылка на мою маленькую электронную книгу с примером Программа – https://barrettotte.github.io/ibmi-bub/#/additional/call/python.

Самый важный бит находится в строке подключения:

conn = pyodbc.connect(driver='{IBM i Access ODBC Driver}', system=host, uid=user, pwd=pwd)

Это немного отличается от множества примеров, которые вы найдете плавающие вокруг для подключения к DB2 и слегка раздражал, чтобы сначала выяснить.

Небольшая утилита ноутбука

Чтобы сделать его еще проще работать с IBMI на Jupyter, я сделал небольшую утилитую ноутбук в https://github.com/barrettotte/ibmi-jupyter.

Он включает в себя некоторые утилиты для подключения и отображения наборов результатов. Главное, что добавляет утительную ноутбуку – это некоторая клетка магия . Я не буду идти в слишком много подробностей, но это позволяет нам пометить клетку для выполнения определенных действий.

Я добавил ячейку волшебство Для DB2 для меня. Чтобы пометить ячейку как DB2 для I, вы включаете %% IBMI , что в значительной степени рассказывает Jupyter относиться к этой ячейке особенным с тем, что определено для IBMI Magic. Яческую магию я определил, принимает один флаг и серию операторов SQL, разграниченной с запятой.

Набор результатов SQL возвращается как Pandas DataFrame Отказ Я призываю вас читать на них. Подводя итог, они являются удобными структурами данных, используемые во многих пакетах науки данных.

Вот краткое изложение флагов, которые у меня в настоящее время реализованы, они приводят к тому, что клеточная магия делает вещи немного отличающимися за кулисами.

-СВВ Результат набор в виде CSV
-html. Результат набор в виде HTML String
-json. Результат набор как json нить
-Текс Результат набор в качестве латексной строки
Результат установлен как простая строка
-xml. Результат набор в виде XML String
-плотбар Результат установлен как простой гистограмма
-plotpie. Результат установлен как простой круговой граф
-сюжетная линия Результат набор как простая строка графика

Посмотрите на клеточную магию в https://github.com/barrettotte/ibmi-jupyter/blob/master/ibmi.ipynb.

Примеры (наконец)

Чтобы проверить мою утилитую ноутбук, я сделал простую тестовую тетрадь с несколькими запросами.

Чтобы включить утилитую ноутбук в другом ноутбуке, вызовите его с % Run IBMI.IPYNB (или любой путь, который вы его положили). Это будет вызвать вход в систему, где он предлагает имя хоста, пользователя и пароля (хранится в виде секрета) с использованием входов Python (GetPass Module для пароля).

Enter host: DEV400
Enter user: OTTEB
Enter password: ········
Connecting to DEV400 as OTTEB ...
Successfully connected!

Теперь каждая клетка потом будет иметь доступ к соединению. Итак, позвольте мне показать некоторые примеры скриншотов запроса, они довольно явно объясняют. Я пропустил json, XML и т. Д. Струнные примеры, потому что они не так круто, чтобы показать.

Все примеры можно найти в https://github.com/barrettotte/ibmi-jupyter/blob/master/tests/test.ipynb.

Вывод

Эта утилита ноутбука сейчас довольно босые. Но, может быть, это даст кому-то некоторые идеи на забавный проект для начала. Как мне надоело надовые обеды на работе, я намерен добавить больше флагов и функций, чтобы сделать это более мощным.

Следующая вещь, которую я хочу добавить, называется Линия магии Таким образом, мы можем использовать набор результатов, мы возвращаемся из запроса. В то же время я добавлю в подготовленные заявления к существующей магии, поэтому могут быть сделаны более сложные визуализации.

Не стесняйтесь дергать код для этого и сделать что-то потрясающее.

Редактировать: Я забыл упомянуть одну из других классных вещей. Вы можете сделать все это из VS-кода. Поддержка ноутбуков Jupyter связана с расширением Python. Это означает, что вы также можете иметь базовый DB2 для I клиента SQL в комфорте VS-кода.

Оригинал: “https://dev.to/barrettotte/jupyter-notebooks-ibmi-547g”