4 ms·
The Python ORM Problem
- dood 19y agoAdam Gomaa suggests writing your own mapper around SQLAlchemy. Django [http://www.b-list.org/weblog/2007/sep/04/orm-wars/ http://www.b-list.org/weblog/2007/sep/04/orm-wars/] and Pylons [http://groovie.org/articles/2007/09/04/sqlalchemy-declarative-layers-and-the-orm-problem http://groovie.org/articles/2007/09/04/sqlalchemy-declarativ...] devs share their thoughts. [seems to be a bug, I tried to add this as 'text' for the submission, but it didn't show up]
- cstejerean 19y agoIt's not a bug, the text field is only used if there is no URL (to ask a question). If you provide a URL the text is ignored (not quite sure what the reasoning behind this was).
- cstejerean 19y agoWell, this article may very well defined the Django ORM problem, but calling it a Python ORM problem might be pushing it a little. Also, I'm not sure who declared the Django ORM the clear winner of the Python Web Frameworks. Also, the next Google won't be using SQL Alchemy either. The truth is when you get that big the law of leaky abstractions comes to bite you in the ass. You can only ignore the fundamental issues that these "frameworks" abstract away for so long. This allows you to build prototypes and medium sized applications easily but sooner or later you need to learn the details and most likely build a custom framework around it that solves your problem. As your application becomes larger chances are YOUR problem is significantly different from the AVERAGE problem and as such you can't use average tools.
- dood 19y agoYes, problem isn't quite the right word. I originally used 'dilemma', but changed it to be in line with the blog post, I should have left it. The dilemma, as I see it, is choosing the appropriate abstractions, and choosing when to abstract yourself. For example, SQLA can be used as an SQL kit + a little personal ORM, or using their ORM, or their ORM with Elixir, or their ORM with your own thing, or some combination of the above. Or if you're the blogger, write your own declarative layer. Not that its a particular problem in the Python world (indeed afaict Python is ahead of the game in this regard), but it is a significant issue for much Python development, worthy of exploration.
- mattculbreth 19y agoI posted back on programming.reddit about this. The correct move is to use Elixir and SQLAlchemy. They're different tools and you can really put each of them to work.