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

Построение Datagrid для CRUD в колбе с python Grid

Сделайте красивую и полностью настраиваемую datagrid для CRUD в веб-фреймворках Python менее чем за 5 минут с помощью PythonGrid.

Автор оригинала: pycr.

python Grid – это новая бесплатная библиотека с открытым исходным кодом для создания полностью работающей datagrid для CRUD (Create, Read, Update, & Delete) для Flask , которая подключается к базе данных отношений, такой как Postgres или MySQL/MariaDB database.

Это делает повседневные задачи datagrid чрезвычайно простыми. Стандартные функции, такие как сортировка, разбиение на страницы, поиск и экспорт CSV поддерживаются из коробки без сложного программирования.

python Grid не требует создания отдельной модели данных для каждой таблицы базы данных.

Для базового CRUD требуется всего две строки кода .

mygrid = PythonGrid('SELECT * FROM TABLE_NAME', 'PRIMARY_KEY', 'TABLE_NAME')
return render_template('template.html', title='a page title', grid=mygrid)

Требования

быстрый старт

Есть несколько вариантов быстрого запуска:

git clone https://github.com/pycr/pythongrid.git

Включенные файлы

Во время загрузки вы увидите что-то вроде этого:

├── LICENSE
├── README.md
├── app
│   ├── __init__.py
│   ├── data.py
│   ├── grid.py
│   ├── export.py
│   ├── routes.py
│   ├── static
│   └── templates
│       ├── 404.html
│       ├── base.html
│       ├── grid.html
│       └── index.html
├── sample
│   ├── sampledb_postgres.sql
│   ├── sampledb_mysql.sql
├── config.py
├── index.py
└── requirements.txt

python Grid имеет три основных файла в grid.py , data.py , и export.py в папке app .

  • grid.py – это основной класс Python, который отвечает за создание таблицы datagrid. Это высокоуровневая оболочка для jqGrid , популярного плагина jQuery datagrid, предназначенного для рендеринга datagrid в браузере.
  • data.py – это класс Python, который возвращает данные через AJAX для заполнения сетки из базы данных.
  • export.py отвечает за обработку экспорта данных.
  • static содержит все клиентские файлы Javascript и CSS, используемые для рендеринга.

Создание базы данных

Найдите образец базы данных в папке sample db . Использование вашего любимого клиента MySQL os Postgres (появится больше поддержки баз данных).

  1. Создайте новую базу данных с именем sample db
  2. Запустите пример SQL-скрипта.

Установка Python

Прежде всего, если у вас на компьютере не установлен Python, скачайте и установите его с официального сайта |/Python прямо сейчас. Чтобы убедиться, что ваш Python работает, введите python3 в окне терминала или просто python , если это не работает. Вот что вы должны ожидать увидеть:

Python 3.6.3 (v3.6.3:2c5fed86e0, Oct  3 2017, 00:32:08)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Затем установите фреймворк Flask.

Установите Flask Framework через виртуальную среду

Настоятельно рекомендуется использовать Python virtual environment . Виртуальная среда Python – это автономная отдельная копия установки Python. Затем различные приложения могут использовать различные виртуальные среды с измененной копией Python, не беспокоясь о системных разрешениях.

Следующая команда создаст виртуальную среду с именем venv , хранящуюся в каталоге, также называемом venv .

python3 -m venv venv

Активируйте новую виртуальную среду:

source venv/bin/activate

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

(venv) $ _

Создав и активировав новую виртуальную среду, наконец, давайте установим иждивенцев:

Установка иждивенцев

python Grid использует SQLAlchemy для поддержки различных типов баз данных.

pip install -r requirements.txt

Конфигурация

Найти файл config.py , и установите свойства подключения к базе данных в соответствии с вашей средой. Демо – версия использует базу данных MySQL.

Вы также можете использовать сокет для подключения к базе данных без указания имени хоста базы данных.

PYTHONGRID_DB_HOSTNAME = 'mysqldatabase.example.com'
PYTHONGRID_DB_NAME = 'sampledb'
PYTHONGRID_DB_USERNAME = 'root'
PYTHONGRID_DB_PASSWORD = 'root'
PYTHONGRID_DB_TYPE = 'mysql+pymysql'

Для Postgres установите тип базы данных в postgres+psycopg2

PYTHONGRID_DB_TYPE = 'postgres+psycopg2'

Инициализировать сетку

Flask использует view functions для обработки маршрутов приложений. Функции просмотра сопоставляются с одним или несколькими URL-адресами маршрута, так что Flash знает, какую логику выполнять, когда клиент запрашивает данный URL-адрес, например “https://example.com/grid” .

У нас есть три функции представления, которые нуждаются в инициализации.

индекс()

Файл routes.py содержит наши функции defindex() view, связанные с корневым URL-адресом /|. Это означает, что когда веб-браузер запрашивает URL-адрес, Flask вызывает эту функцию и передает возвращаемое значение обратно в браузер в качестве ответа.

Внутри функции он создает новый экземпляр класса Python Grid и присваивает этот объект локальной переменной grid . Примечание orders – это таблица из нашей примерной базы данных sample db .

grid = PythonGrid('SELECT * FROM orders', 'orderNumber', 'orders')

Python Grid initializer показанный выше требует 3 параметров:

  1. Простая инструкция SQL SELECT
  2. Первичный ключ таблицы базы данных
  3. Имя таблицы базы данных

Функция view передает объект grid в отрисованный шаблон из grid.html шаблон.

return render_template('grid.html', title='GRID', grid=grid)

данные()

Далее нам нужны данные для сетки (таким образом, datagrid В следующей функции представления data () мы создаем новый экземпляр класса PythonGridDbData , который отвечает за извлечение данных из базы данных для заполнения нашей datagrid.

Python Grid Db Data class требует только 1 параметра, который должен быть тем же оператором SQL SELECT, который используется для класса Python Grid.

data = PythonGridDbData('SELECT * FROM orders')
return data.getData()

экспорт()

Функция экспорта почти идентична приведенной выше функции данных, за исключением того, что нам нужно использовать Python Grid Db Export для инициирования нового instace для класса экспорта.

exp = PythonGridDbExport('SELECT * FROM orders')
return exp.export()

Привет, Грид

На этом этапе мы можем запустить нашу программу с помощью следующей команды.

flask run

Он должен дать вам красивую сетку данных с данными из таблицы orders .

Он должен дать вам красивую сетку данных с данными из таблицы || orders||.

Список общих функций Datagrid

Из базовой сетки мы можем добавить новые функции, такие как изменение заголовка, добавление поиска и включение экспорта, settextalign и т. Д., С помощью простых вызовов функций.

  • Подпись Datagrid

Подпись Datagrid
grid.set_caption('Orders Table')
  • Заголовок столбца

Заголовок столбца
grid.set_col_title('orderNumber', 'Order #')
  • Скрыть Столбцы

grid.set_col_hidden(['customerNumber, logTime, shippedDate, requiredDate'])
  • Установите размер страницы (количество строк для отображения на странице)

Установите размер страницы (количество строк для отображения на странице)
grid.set_pagesize(20)
  • Установите размер Datagrid (например, Ширина 800px, Высота 400px)

grid.set_dimension(800, 400)
  • Включить поиск

Включить поиск
grid.enable_search(True)
  • Отображение Номера Строки

Отображение Номера Строки
grid.enable_rownumbers(True)
  • Отображение количества страниц на панели инструментов

Отображение количества страниц на панели инструментов
grid.enable_pagecount(True)
  • Выравнивание текста столбца (например, Слева, по центру или справа)

grid.set_col_align('status', 'center')
  • Установите ширину столбца (например, 600 пикселей)

grid.set_col_width('comments', 600)
  • Включить экспорт CSV

Включить экспорт CSV
grid.enable_export()

См. Список полной документации python Grid .

Пожалуйста, следите за второй частью пошагового руководства для остальных операций CRUD, включая Добавление, редактирование и удаление !

Если у вас есть какие-либо вопросы по поводу этого урока, не стесняйтесь комментировать его ниже или обращаться ко мне.