Zope 的数据源可以包括关系数据库,以及非关系型的 LDAP/IMAP 等。 Zope 支持常见的关系型数据库,包括Oracle, Sybase, MySQL 以及大多数 ODBC 兼容的数据库。
为了存取后台数据,你需要建立一个数据库连接对象,然后建立 SQL 方法对象,
这个对象能使用 DTML ,能很方便的建立动态的查询语句。下面建立的 getTasks 对象是从"tasks"表中选出对应用户的任务:
--------------------------------------------------------------------------------
select * from tasks
where
emp_id='<!--#var AUTHENTICATED_USER-->'
--------------------------------------------------------------------------------
结果集的数据应用于 DTML 文档:
--------------------------------------------------------------------------------
<H2><!--#var AUTHENTICATED_USER-->的任务</H2>
<TABLE>
<!--#in getTasks-->
<TBODY><TR>
><!--#var title--></TD>
><!--#var due_date--></TD>
</TR>
<!--#/in-->
</TBODY></TABLE>
--------------------------------------------------------------------------------
Zope 以对象为中心的设计,允许你采用清晰的数据/表示分隔,数据库程序员在 SQL 方法对象上工作,内容设计人员调用这些 SQL 方法。这样的对象模型也能容易的集成多种数据源,高级的数据存取特色甚至能定义数据库结果的对象行为,从而把平面型的关系记录转换为 Zope 应用的“智能”数据。
Zope 开发环境的另外一个好处就是它的事务模型能自动延伸到后台数据库,如果你的关系型数据库支持事务,Zope 会在运行SQL 方法之前自动开始事务,而在 Web 请求成功结束后自动提交事务,如果其中发生错误则会自动回滚,使事务的集成对Web 开发人员完全透明。
五、集成的搜索
Zope 提供快速,灵活的索引,采用 ZCatalog 对象搜索。ZCatalog 对Zope 网站下所有类型的对象提供可高度定制的全文和域的索引。对象可以根据其内容或者属性索引,能提供结构化的搜索。
搜索结果可以来自多种不同的数据源,除了基本的文档外,还可能来自邮件列表的EEmail 消息对象,数据库里的记录,甚至 LDAP 目录中的资源。