Здравствуйте уважаемые. У меня возник вопрос и что бы найти правильный ответ мне нужны ваши мнения.
Учу Flask и для дальнейшей работы нужно было установить MySQL. Но из за тупой привычки выбрать самое лучшее то погуглил и выбрал PostgreSQL. Еще немного покопался и следом вышел на SQLAlchemy которая дает возможность писать код не думая о диалектах SQL. И еще код становится не зависим от какой либо базы данных.Это все что я смог узнать о SQLAlchemy. По вашему что выбрать и почему?
Желательно что бы был хороший функционал, легкость при изучении и светлое будeщее :D
умея в скл проблем пересесть на использование либо полноценной орм, либо просто какого-то маппера нет (кроме душевной боли от необходимости использовать очередной "более удобный" дсл вместо "старого и неудобного" дсл). Да и языки/фреймворки/ормы меняются, а зная какой-то sql99 становится в принципе пофиг с какой базой работать. Понимая как "под капотом" работает условный постгрес становится легче работать с условной авророй. Да, нюансов всегда хватает, но к тому моменту ты уже приблизительно знаешь что искать. Ормы офигенно удобны когда нет сложной логики и таблицы влязят в память. Иначе один фиг использование любого орма превращается в использование кастомного скл + маппинг. По поводу того что орм позволяет не думать о диалектах скля - я не знаю ни 1 человека которому действительно нужно было перевести проект с <название базы> на <название базы> и это бы реально решило все проблемы. Обычно серьезные проблемы возникают на большых проектах, и в таком случае при переезде на другую базу различия в синтаксисе будут наименьшей проблемой. Ну и да, начинать с постгреса действительно будет немного сложней чем с мускуля. Но для простых запросов различия наверно будут минимальны.
ayazer , я сам не верю что орм сможет так же тонко настраиваться как чистый SQL. Но у каждой базы данных свой диалект SQL. Если я выучу PL/pgSQL то смогу работать только на PostgreSQL. Но если научусь работать на SQLALchemy то мой код не будет зависеть от какой либо СУБД. Если например клиент потребует связи с MySQL то я не буду в беде...
Да я знал про трудности когда заменил MySQL на PostgreSQL.
Tobi-kun,
у каждой базы один и тот-же скл. это стандарт который выполняется во всех крупных РСУБД, а все шерховатости можно уточнить по первой-же ссылке в гугле. Заметные различия начинаются уже при использовании специфики базы. там уже вылазят и TSQL для MSSQL, и plsql для оракла , и plpgsql с plperl и десятком других языков для постгреса.
Я не отговариваю от использование ормов, в некоторых случаях они действительно незаменимы. Но разобратся с склем на уровне достаточном для написания крудов - наверно пара вечеров. понимая как пишутся "сырые" запросы орм перестает казатся магией и разобратся с ним займет еще может вечер. А дальше видя проблемное место уже будет не так страшно смотреть план выполнения и думать как это все пофиксить
Для обучения - используйте орм - алхимию или джанговскую
Для продакшена - используйте орм
Когда станете спецом по ИБ, sql и питону - пишите raw запросы