Логотип
Работаем с базами данных
16.01.2017

Давайте сегодня поговорим о базах данных. Почему нет? Разумеется, в этом посте я дам ссылки на свои очередные библиотеки, как Вы уже могли догадаться по разделу, в котором он находится. Но это же не значит, что нам нельзя будет чуть-чуть и отвлечься. Так? Ладно, поехали!

KozDbBridge
альфа-версия от 15.11.2016

Репозиторий

Начнём с библиотеки, которую я на самом деле уже выкладывал. Но на сайте её так и не было, так что нужно исправить это. Да, KozDbBridge (как всегда, офигенное название) — это небольшой мост для Delphi, которая позволяет выполнять SQL-запросы через единый интерфейс к базе данных, используя либо ODAC, либо стандартный dbExpress. Впрочем, никто не мешает написать реализацию интерфейса для других инструментов.
Ну а больше этот класс ничего и не умеет. Да, всего лишь транслирует запросы и возвращает результат. Мне он нужен был лишь по той причине, что экстренно пришлось переезжать с ODACа, у которого кончился trial-период, на использование стандартных компонентов.

А вообще я Delphi не люблю. Несмотря на то, что когда-то я писал на нём неплохие приложения (сам себя не похвалишь, так никто не похвалит :с), сейчас он безбожно устарел и откровенно бесит. К хорошему быстро привыкаешь и после C# возвращаться на это чудо ну никак не хочется. А ведь местные оборонные предприятия застряли в нулевых и до сих пор заставляют вузики готовить паскалешкольников без малейшего понятия о построении архитектуры приложения, но зато умеющих за ночь сваять кривую диаграмму бизнес-процессов. Это и есть один из тех факторов, почему задерживаться в этом городе надолго мне бы не хотелось. Осталось понять, как решиться на переезд и из «мамкиной корзиночки» стать полноценным самостоятельным человеком без суицидальных наклонностей.


SimpleDatabaseAdapter
v1.1.0 от 21.01.2017

Репозиторий
Также можно добавить к проекту, используя Composer: composer require kozalo/simple-database-adapter

А вот и добрались до героя сегодняшнего дня! SDBA или SimpleDatabaseAdapter похож на предыдущую библиотеку, но уже несколько более серьёзен. Это небольшой посредник между базой данных под управлением СУБД MySQL и Вашим PHP-кодом, использующий для своей работы стандартный модуль mysqli. В чём же соль? Опять бесполезная игрушка? Ну для сложных приложений эта библиотека также не подойдёт. А вот для простых может немного упростить жизнь. Итак, соль.

SDBA позволяет Вам вообще избавиться от SQL-кода! У него есть ряд простых и понятных методов (Select(), Insert(), Update() и т. п.), которые принимают в качестве параметров простые и привычные для PHP стуктуры данных: строки, числа, массивы. Например, чтобы получить имена и адреса электронной почты пользователей некоего сайта из таблицы users достаточно выполнить такой код:

Пример кода, использующего SDBA

У библиотеки есть подробная документация на русском языке, так что не вижу причины объяснять тут ещё что-то. Просто зайдите, почитайте и решите, нужна ли она вам. Вот и всё.


Заключение

Ну пока это всё, что готово на данный момент. На самом деле, у меня ещё начат проект расширяемого интерфейса для языка Python. Как минимум, там сразу будет реализация под SQLite. В отличие от двух вышеприведённых библиотек, эта будет работать с данными в БД по объектно-ориентированной схеме. Уже чувствуется размах и серьёзность? База данных будет генерироваться из миграций, сгенерированных на основе моделей, описанных на Python. И эти же модели будут использоваться для правильного соотношения типов. В общем, задумка годная, но когда будет реализована — хрен знает. Так что приведу пример описания таблицы и будем закругляться.

Пример модели для таблицы Users на языке Python

Вообще, только намучившись с переносом состояния базы данных через экспорты-импорты одного SQL-файла, я понял всю прелесть миграций в Laravel и Entity Framework. Это реально классная штука!