Можно ли использовать SQLAlchemy самостоятельно, независимо от фреймворка, и рекомендуется ли это?

#mysql #sql #database #node.js #sqlalchemy

#mysql #sql #База данных #node.js #sqlalchemy

Вопрос:

Я хочу использовать Node.js как мой фреймворк, но у него нет хорошего способа управлять схемами MySQL и миграциями.

Могу ли я использовать SQLAlchemy самостоятельно? Просто для синхронизации таблиц и создания столбцов и т.д. …?

И затем на моем node.js Я бы НЕ использовал SQLAlchemy для запроса или вставки…

Рекомендуется ли это?

Ответ №1:

Да, это можно сделать. Хотя у меня нет какого-либо опыта, специфичного для Node.js Я использовал SQLAlchemy для:

  • настройте небольшие базы данных для приложений, отличных от SQLAlchemy.
  • запрашивайте, обновляйте и переносите базы данных, которые не были созданы с помощью SQLAlchemy.
  • подключайте новые приложения, использующие SQLAlchemy, к существующим базам данных MySQL.

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

Ответ №2:

Я использую SQLAlchemy-migrate для создания / обновления / понижения уровня схем баз данных. Это позволяет вам проектировать схему как модель SQLAlchemy или простые операторы SQL (или смешанные). Вы создаете «версии» шагов обновления / понижения для своей схемы в локальном репозитории, которые затем применяете к любой базе данных, с которой SQLAlchemy может взаимодействовать.

Ответ №3:

Хотя использование инструментов миграции SQLAlchemy является хорошей идеей, некоторые из ORM для node действительно выполняют разумную работу по решению проблемы миграции. Например, Persistence JS может синхронизировать базу данных со свойствами, объявленными в вашем файле JS.

Я считаю, что SQLAlchemy — отличный выбор, он достаточно гибкий, чтобы обрабатывать любую структуру базы данных, которую вы можете использовать (в отличие от чего-то вроде ActiveRecord Ruby, который делает предположения, которые могут быть или не быть верными в вашем случае).