[Zope-DB] Using psycopg directly in Zope Python script
Jørgen Frøjk Kjærsgaard
jfk at metation.com
Mon Jul 4 05:04:59 EDT 2005
Dieter Maurer wrote:
>Jørgen Frøjk Kjærsgaard wrote at 2005-7-1 23:28 +0200:
>
>
>>I need to be able to access a Postgresql database directly from Zope
>>Python scripts (Z SQL Methods is not an option as the SQL code occurs in
>>modules that must be re-usable in a non-Zope context).
>>...
>>import psycopg
>>dbcon = psycopg.connect('host=%s dbname=%s user=%s' % ('dbhost',
>>'dbname', 'username'))
>>
>>
>
>You should *NOT* do this because you move outside of Zope's
>transaction handling.
>
>Fetch the connection from the DA. It looks somehow like:
>
> db = DA() # low level connection object
> db._register() # register with Zope's transaction system
> conn = db.db # this is the "psycopg" connection
>
>Pass the "conn" into your code.
>
>
Thanks! This is exactly what I would like to do in the end. The code
above was just a first attempt to get started.
>>...
>>When run outside Zope, it opens a connection as expected. When run in
>>Zope, however, I get "thrown out" - the browser asks me to enter my user
>>name and password again. I get no error message!
>>
>>
>
>Cancel the login dialog and you will get the error message :-)
>
>
Good to know :-)
>>Does Zope somehow create a restricted environment
>>
>>
>
>PythonScripts are a restricted environment where "import" is
>restricted as well as access to attributes.
>
>
I didn't read the Zope book very carefully on that point - I have been
using Python mod_python for years but am new to "advanced" Zope programming.
Another question: When I define an external method to process form data,
I have to do it like this:
def process_form_data(self, name, address, zip, ...):
...
What I would like to do is:
def process_form_data(self, **args):
...
so that I don't have to alter the argument list if I add or remove
fields. However, args always comes out empty, presumeably because Zope
inspects the argument list and passes only those arguments that have a
matching name in the list. Is there any way to tell Zope to pass "the
rest" in **args?
--
med venlig hilsen / regards
Jørgen Frøjk Kjærsgaard
Systemudvikler
Metation ApS
systemudvikling * hosting * IT rådgivning
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope-db/attachments/20050704/20ee4d5a/attachment.htm
More information about the Zope-DB
mailing list