Basic Question: Zope vs Plone as an Database Application Development Platform

I am new to Python, Zope and Plone, and could benefit from the insights of someone in the Zope community who is familiar with Zope 2. My organization has a moderately complex management record keeping system built using an Oracle database (over 100 tables) and Zope 2.x. The application is liked by the user community, and has been enhanced by a variety of developers over the years. At some point we want to transition the UI to a more modern platform, and possibly even merge this application with another Oracle web-based app. As I understand it, theoriticaly, there is an upgrade path from Zope 2 apps to Zope 4 and from Zope 4 to Zope 5. As someone with little familiarity with Zope and Plone, I am a bit confused. It seems that Plone, fundamentally, is a content management system that runs on Zope. As I understand it, Plone also has some tooling/support for developing simple web front ends to manage data in relational database systems. I am struggling to understand if Zope 4 or Zope 5 are robust frameworks for developing moderately complex web-based database records management systems and whether or not Plone is also a viable option for this type of work. So for those of you familiar with Zope 2, 4, and 5 and Plone, I have two basic questions:

  1. Is there a relatively easy upgrade path for a Zope 2 application to Zope 4 and/or Zope 5 or did the framework change so much over these releases that an upgrade is not worth the effort? 2) Is Plone a well suited for building web-based, relational database records management systems? And if so, why would you use Plone over Zope? I look forward to learning what some of those with some experience with Zope and Plone have to say on these topics.

Ask yourself: what functionality do you need from Plone/Zope? The ZODB? The security management?
Workflow support? Access control? If your data is in Oracle and if you are looking for a RDBMS frontend for the web, then Plone/Zope is likely not the right choice. For giving a proper recommendation, we need more information.

As noted, we already have a Zope 2.x application that works well in terms of meeting business requirements. The application is managing records across 100 or so Oracle tables. The Zope DB is used to store some supporting documents, but the core records are stored in Oracle. This system was originally built by a group that was also supporting a lot of internal web content development and publishing. My guess is they selected Zope for the later, but then leveraged it for the former. So Andreas, I take it your position is that you would not use either Zope or Plone for building moderately complex relational database records management systems?

jaf via Plone Community wrote at 2022-6-2 20:08 +0000:


  1. Is there a relatively easy upgrade path for a Zope 2 application to Zope 4 and/or Zope 5

There is.

  1. Is Plone a well suited for building web-based, relational database records management systems?

That is not Plone's primary purpose.
If you need nothing else, you likely do not need Plone.

A client (with essential data in an RDBMS) is using Plone
because he provides so called "business portals" (over 1.000)
for his clients and Plone has good support for customizable
portals, portlets, limited customer content, workflows, customizable
UI facilities (e.g. Action's).

Thanks Dieter, what about Zope? Some developers I have talked to seem to use Zope and Plone interchangeably. Is Zope well suited for developing database applications?

A framework like Django is better suited when your application is backed by a RDBMS.
There also many other web frameworks that are more lightweight and better suited for RDBMS applications than Zope or Plone. Of course, there is no issue doing whatever you like in Zope or Plone...both provide the functionality. But from the information that you provided, Plone/Zope are likely a good primary option. In addition to that: RDBMS handling in Zope/Plone was never a first-class citizen. Modern approaches to web application with FastAPI or Flask and decent RDBMS integrations in Plone (also with support for async and type annotations) are ages ahead from what we have in Zope/Plone.

jaf via Plone Community wrote at 2022-6-2 23:09 +0000:

Is Zope well suited for developing database applications?

As you know yourself, you can develop RDBMS applications with Zope.
Once you have a database adapter for your database system, well
integrated with Zope, an RDBMS application is not that
different from other web applications.

Whether you use Zope or a different framework depends largely
on local factors such as prior familiarity, available knowledge
and resources, available components your can reuse, ...

If you start from scratch, then a different framework, more
targeted towards RDBMS applications might be better:
Zope's user and developer communities are rather small
and RDBMS applications are not the primary focus;
as a consequence, it may take longer that new RDBMS features
(e.g. new database systems, new concepts of a database system, ...)
become easily available for Zope applications.
As an example, I had to develop myself (for a client)
savepoint integration for Zope + Postgres
(both Zope and Postgres support savepoint but the
available integration component did not make the connection);
with a different framework, it might have been supported out of the box.

You clearly need to define what you understand under "building moderately complex relational database records management systems?" When you are looking for a system to build edit/view forms for database records, go with Django. I do not see any benefit in using Zope/Plone for acting as web frontend for a RDBMS. In general: the wrong tool for such a problem.

In our case, Plone provides access to data that is stored in multiple systems and lets us publish it in various formats. i.e. we were already using Plone and later extended it to access relational databases.

If your primary goal is only to provide a front end to your databases, I concur with Dieter and Andreas: maybe another framework is a better option


Plone is at first a CMS. It it very well suited to manage many hierarchical organized documents through the web. It is very secure, offer fine grained role based access control and much more. It offers workflows, page composers, event based notifications and actions and much more. Due to the characteristics of the data it is organized in a tree, not in tables.

I do not think Plone is the right tool for the use case "building moderately complex relational database records management systems". The data is likely not tree-ish.

Plone and Zope can be used as a framework for not-so CMS-ish applications. I did this often, but even then I had tree-ish data and the need of fine-grained ACLs. It has some level of SQLAlchemy integration as well (transaction wise at least). So lot of "crazy" things are possible.

But other frameworks, like Django, are specialized on table based data, with auto-generated views on tables and records and so on. It would be less boilerplate to start here.

While I would never use Django as a base for a CMS (btw, there is DjangoCMS and I do not like it), I would not use Plone or Zope theses days for integrating with an 100-table database.

That said, without more detailed knowledge about your use-case, existing code and other circumstances it is difficult to decide.