[Zope] How to call a python script within a Z-SQL method?

Dieter Maurer dieter at handshake.de
Wed Nov 26 15:11:51 EST 2003


Julian Clark wrote at 2003-11-26 17:07 +0800:
 > I'm trying to pass a result (or column of results) to a python script,
 > within an SQL query.

Sounds impossible...

 > SELECT
 > dealer_no,
 > COUNT(mobile_no) as connects,
 > entry_date
 > FROM
 > connects
 > WHERE
 > entry_date >= #2003/11/20#
 > GROUP BY
 > dealer_no,
 > entry_date
 > 
 > 
 > where I'm wanting entry_date to be passed to a python script (and have the
 > result returned as part of the sql query)

"entry_date" is a field in your database table.
A Python script can only access this field through SQL (which is possible,
e.g. using a second Z SQL method).
When you call the script in the SQL code above, then the scripts
result will affect the *SOURCE* for an SQL command but not its
result.

 > ...
 > How Can I do something like this?
 > *****************************
 > SELECT
 > dealer_no,
 > COUNT(mobile_no) as connects,
 > <dtml-call to_month(entry_date)>
 > FROM
 > connects
 > WHERE
 > entry_date >= #2003/11/20#
 > GROUP BY
 > dealer_no,
 > entry_date
 > *****************************
 > 
 > ###to_month
 > return input.mm()

You do not call the python script inside the SQL but use
a Python Script to postprocess the result.

The easiest way is to call "to_month" on access to "entry_date".

When you know the result set is small, you can also use something like

     transformedQuery():
       r = context.mySQLMethod()
       for hit in r: r.entry_date = entry_date.mm()
       return r

-- 
Dieter



More information about the Zope mailing list