I'm trying to decide which application server/framework I can use for python development and for that, in my case, oracle's support is a must.
While analyzing I found out Django is trying to add Oracle as an option right now, using, of course the cx_Oracle module: http://code.djangoproject.com/wiki/OracleBranch.
That's good news. If anyone can comment their experience with Zope, Django, etc I'll appreciate it.
If you need something stable and flexible, consider mod_python (www.modpython.org) which offers a robust integration with Apache Web server - at some cost however - it's rather low-end stack, still offering such mechanisms as cookie and session handling, authentication, and accessing Apache internals. Together with cx_Oracle module you could do pretty much everything but it is not a "wiki in 10 minutes" environment.
Most of the frameworks use ORM for database connectivity and these ORMs are usually compatible with several other vendors (MySQL, PostgreSQL) -- to the point where many native DBMS optimizations are lost just to assure a consistent API.
I am very pleased with mod_python and cx_Oracle but also tend to code things myself.
I agree with you. My greatest fear regarding this kind of frameworks is the things they assume when they code my queries and wrap them in classes. Being a long time pl/sql -sql developer (and Tom Kyte's fan) I know huge mistakes can be coded when you rely on these abstraction layers.
However, being open source, I can analyze what they do and introduce my fixes whenever I consider them suitable. That's huge, among other things, cause there are lots of things they handle right in other aspects of the development.
I think, for example, Zope is less database oriented in the way Django understands db interaction (for more on this, please read: http://www.djangoproject.com/documentation/db-api/) but, on the other side, I'm not sure if Zope's db integration with oracle is up to date with cx_Oracle.
For now, I'm just investigating: I downloaded both of them and I'm learning what they can do. Just wanna see if experienced users can drop an advice on this matter.
Well, Django itself is great for development of `standard` applications. You create a model, enter 3 commands and then you have a working application with admin interface. Cool, but in my personal experience I've been hitting the wall pretty fast and the amount of time spent on decrypting automagical functionality of a framework is in direct proportion to time spent designing and implementing it ourselves. Problems like schema evolution still need to be resolved by hand.
My limited experience with Zope comes down to the fact that it is a bit like JBoss but focused more on the content management and portal solutions. Plone is a very interesting example of a widely used CMS running on top of Zope (plone.org and plone.net).
Some companies are using Java application servers together with Jython servlets. You can also now run ASP.NET written in IronPython (www.asp.net/ironpython). These two because out of all Web stacks these are the most mature and as we know Oracle's support of .NET and Java is outstanding.
If you are more into PHP or Perl, Python Server Pages from mod_python gives you capabilities similar to those offered by mod_php or mod_perl - but within Python.
You have to use SQLAlchemy instead of SQLObject, but that's a good idea anyway. I just managed to get SQLAlchemy working with the most hideous eight-way-join-through-a-database-link you can imagine... I'm using it to refactor an old project, and it looks like it's going to eliminate about 75% of my code. Whoo!
I've also used Zope 2. The Oracle support is kind of a pain to set up, because you have to use DCOracle instead of cx_Oracle, and you have to dig around for a compiled DCOracle if you're on Windows... but once you get that set up, it's fine.
I haven't tried Django, so I can't compare to that.