Jim Fulton wrote:
How did you execue this? What error did you get?
Ironically, I got it to work fine As Long As I didn't close the connection. External method: import Globals def doit( state="Texas", city="Dallas"): connection = Globals.DB.open() connection.root()["myobj"]="abc" # causes crash: connection.close() return "blah" If I don't comment out that line: Traceback (innermost last): File C:\temp\mywebsite\lib\python\ZPublisher\Publish.py, line 209, in publish_module File C:\temp\mywebsite\lib\python\ZPublisher\Publish.py, line 179, in publish File C:\temp\mywebsite\lib\python\Zope\__init__.py, line 199, in zpublisher_exception_hook (Object: ApplicationDefaultPermissions) File C:\temp\mywebsite\lib\python\ZPublisher\Publish.py, line 169, in publish File C:\temp\mywebsite\lib\python\ZODB\Transaction.py, line 236, in commit File C:\temp\mywebsite\lib\python\ZODB\Connection.py, line 459, in tpc_begin Error Type: AttributeError Error Value: 'None' object has no attribute 'tpc_begin' ---- I also had an unrelated problem that I can't reporduce: Zope was trying to unpickle an instance of a class that I had defiend in the external method and then deleted. I tried to define it again but it didn't work. Maybe the problem is not that I deleted it but rather that I defined the class in an extension. Extensions aren't imported in the "standard way". They are "exec"ed on demand, right? The error message (on Zope startup) was: SystemError: Failed to import class PersistString from module __main__ I figured out how to work around this while I was writing this message. I defined the classes in __main__ Maybe Zope should disallow you from persisting classes defined in __main__ if that's a problem. That would help others avoid my problem. Paul Prescod