Dear Zopistas, I am in the process of learning about Zope, and trying to determine whether to make the switch from pure Python CGI scripts. If someone could answer the following questions (and I apologize, as it will probably seem naive), it would really help. Let's suppose I have a page where the user queries a data base, for instance a telephone directory. The telephone directory is in an Excel file. At present, I have a CGI script that opens an ODBC.Windows connection, executes an SQL query, and outputs the results (names, phone numbers) as an HTML table using "print". What is the best way to do this in Zope? Here are the points that I don't get: 1. It seems that the only way to establish a DB connection is through Gadfly. There are warnings everywhere that Gadfly is inefficient. Therefore, I want to use ODBC (ODBC.Windows), like I did before. How? 2. I might eventually need to do complex calculations on the retrieved data, so I would prefer using Python code in an external method, rather than a DTML method. In order to get Zope to accept the line "import ODBC.Windows", I had to copy the ODBC and DateTime directories from my regular Python installation (PYTHON/lib) to ZOPE/bin/lib. But then, when I try running the script, I get one of the following problems: a. If I go through authentification, the script runs, but I cannot establish the connection to the database. b. If I type in the URL of my search page directly, without authentification, I get a Zope error: "initialization of module mxODBC failed (exceptions.AttributeError:mxDateTimeAPI)". Is my ODBC.Windows installation wrong, or do I have a more fundamental problem? 3. What if my Python function in my external method wants to return information to my DTML method? For instance, how do I return a Python list, and what do I do in my DTML method to process it (e.g., output a line for every member of the list)? 4. The way I call my Python function now is through the <form method="POST" action="search"> tag, where "search" is the external method ID. The form has a field called "name", and my Python function has an argument also called "name", and so it recuperates the string that was entered in the "name" field. Can I pass the "name" as an argument to a DTML method? If these questions have answers, I would really appreciate them. Otherwise, if I'm completely off-base (for instance, if I'm thinking in Python terms and not in Zope terms), please point me in the right direction! Thanks in advance. Mark Wexler