Как я могу использовать DBD :: Proxy с DBIx :: Class? - PullRequest
1 голос
/ 01 декабря 2008

Мне нужно получить соединение с базой данных через брандмауэр, а также ограничить количество запросов, которые можно запускать. DBD :: Proxy кажется идеальным решением для этого. Однако в настоящее время я использую DBIx :: Class и не могу понять, как их соединить.

В частности, DBD :: Proxy не принимает SQL; он принимает конкретные именованные запросы. Но DBIx :: Class, похоже, не имеет способа вызвать эти именованные запросы.

Это внутри веб-приложения на основе Catalyst.

1 Ответ

1 голос
/ 01 декабря 2008

DBD :: Proxy действительно принимает SQL. Это позволяет для именованных запросов для удобства.

Нет удобного способа использовать DBIx :: Class с именованными запросами DBD :: Proxy, поскольку цель объектно-реляционного сопоставителя DBIx :: Class (ORM) - представить объектно-ориентированное представление манипулирования данными в SQL Языковые (DML) заявления. Функция именованного запроса DBD :: Proxy не является оператором DML, поэтому DBIx :: Class не имеет функции, которая соответствует вашим потребностям: передача литеральной строки непосредственно в функцию prepare () вашего драйвера DBD :: Proxy.

Некоторые неудобные способы:

  1. Не используйте DBIx :: Class. Просто сделай это в DBI. Вы можете использовать Catalyst :: Model :: DBI или обычный DBI + катализатор :: Model :: Adapter + свой собственный класс модели.

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

...