php DAL вне схемы - PullRequest
       8

php DAL вне схемы

0 голосов
/ 15 марта 2011

Год назад я разработал веб-платформу на PHP, и я был горжусь уровнем доступа к данным, который я написал для него. С тех пор я начал снова и снова использовать одну и ту же концепцию. Но теперь я думаю поднять его на новый уровень, вместо того чтобы переписывать весь код доступа к базе данных, я хотел бы создать инструмент, который будет анализировать мою схему SQL и генерировать классы DAL самостоятельно.

Информация, необходимая из схемы SQL для генерации кода:

* Tables
* Fields
* Fields types
* Foreign keys

Действительно, я искал какой-то парсер SQL и нашел кое-что, но в итоге решил сделать это по-другому. Вместо того, чтобы генерировать код из самой схемы SQL, я бы сгенерировал его из метаданных, которые я создал бы в соответствии с реальной схемой базы данных.

Я думал о чем-то вроде:

TableName[
   FieldA : Type;
   FieldB:  Type;
]
TableName2[
   FieldA : Type, FK(TableName.FieldA);
   FieldZ:  Type;
]

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

Вопрос теперь таков: Есть ли в Python какой-то встроенный API или какая-то сторонняя библиотека, которую я мог бы использовать для анализа какого-либо формата, который позволил бы мне определить мою схему, как указано выше? Я не хочу изобретать велосипед, и мне совсем не интересно писать собственный парсер, все, что мне нужно, - это получить базовый и рабочий инструмент как можно скорее.

Спасибо

1 Ответ

1 голос
/ 15 марта 2011

Непосредственной мыслью было бы просто использовать обычный синтаксис Python для определения ваших таблиц:

{
    'TableName': {'FieldA': ['Type', FK(..)], 'FieldB': ['type']}
}

и т. Д.

Однако вы можете взглянуть на как djangoделает это : вы определяете класс и добавляете свойства к этому классу, который затем будет представлять вашу модель.Затем эту модель можно использовать для генерации операторов SQL, а также допустимый и легко расширяемый код Python.

Другими предложениями может быть использование структуры JSON для представления ваших данных, а затем написать некоторый код дляразбери это.Это было бы похоже на использование существующего синтаксиса Python, но было бы легче разобрать в других языках (приведенный выше пример будет почти допустимым синтаксисом JSON из коробки (заменить «на»).

...