0

我有一个 plone/zope 应用程序:在这个应用程序中,我放置了一个 Java 小程序来进行某些数据评估。我需要知道的是我是否可以让小程序查询 zope 数据库。

作为尝试,我在 ZMI 中创建了一个脚本,并通过一个 POST 请求在小程序中调用该脚本。它适用于 eclipse 框架,但我不知道这是否适用于生产环境(我认为是的,因为它是一个签名的小程序)。无论如何,POST 请求是在以下代码中完成的:

String data = URLEncoder.encode("__ac_name", "UTF-8") + "=" + URLEncoder.encode("admin", "UTF-8");
        data += "&" + URLEncoder.encode("__ac_password", "UTF-8") + "=" + URLEncoder.encode("password", "UTF-8");
        data += "&" + URLEncoder.encode("form.submitted", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");

URL url = new URL("http://xx.xx.xx.xx:8081/myPloneWebsite/testQueryScript");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line = rd.readLine()) != null)
{
    System.out.println(line);
}
wr.close();
rd.close();

我还想在该脚本中添加一些参数:我知道如何在这个 java 代码中执行(只需要复制用户名-密码结构),但不知道如何在 python 中处理这些参数。参数将是一个 ID:从 ID=xx 的对象中获取所有数据。我创建的脚本如下,它在给定条件的所有对象上循环:

catalog = context.portal_catalog
brains = catalog(portal_type='Permesso di costruire', review_state='S9')
for b in brains:
   obj = b.getObject()
   print "%s\t%s" % (b.Title, obj.elenco_progettisti())

return printed

如果有一种方法可以让小程序在 Zope 数据库上读写而不打印和格式化每个属性,那就更好了……

4

1 回答 1

2

如果我可以让小程序查询 zope 数据库

没有。不容易。也许根本没有。使用 Java Applet 查询 zope 数据库的一种理论方法是:

  • 通过ZEO向网络公开数据库
  • 从 Java 小程序连接到 ZEO

但这种方法可能不值得付出努力。

至于参数,怎么样query string parameters?例如:

如果您将参数名称添加到parameters字段,您的 Python 脚本可以处理查询字符串参数,例如:

在此处输入图像描述

aclark@Alexs-MacBook-Pro:~/ > curl http://localhost:8080/test\?foo=bar
This is the Script (Python) "test" in http://localhost:8080
bar
于 2012-12-17T12:00:26.510 回答