我有一个 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 数据库上读写而不打印和格式化每个属性,那就更好了……