[Zope-DB] ZSQL Question - Insert multiple rows in one statement?
mal at egenix.com
Thu Aug 26 09:13:38 EDT 2010
Mark Phillips wrote:
> When I retrieve multiple values from a selection box, I need to create a
> loop somewhere to insert the multiple values (rows) into a table. Is there a
> way to do this within a ZSQL statement, or is it best to do the looping in a
> Python script?
> My specific example....
> table 1 (Players) has information about players (i.e. team members for a
> sports team). There is a primary key - playerID
> table 2 (Seasons) has information about each season - primary key is
> table 3 (PlayerSeasons) has two columns - playerID and seasonID.
> The form to crud a player has a combobox where one can select multiple
> seasons for a player. When I do an add or update, I have to add one or more
> rows to the PlayerSeasons table. Does this loop have to be in a Python
> script, or can it be implemented in ZSQL? I looked at the 'multiple'
> keyword, but all the examples indicate that it apples to sql tests, such as
> testing against a set of values. I can't seem to find any examples where one
> is inserting multiple rows into a table.
Other's have already shown how this can be done using DTML
Here's a variant that will work with our mxODBC Zope DA
(it uses add-ons that we implemented to make processing
more efficient) and using an external method:
request = self.REQUEST
response = request.response
# Get rows to insert from request (let's assume this returns
# a list of 2-tuples (playerID, seasonID))
data_rows = request....
# Get Zope connection object (assumes this is called sqlserver)
sqlserver = self.sqlserver
# Get a database connection (by calling the object)
connection = self.sqlserver()
# Insert data in one go
connection.executemany('insert into PlayerSeasons '
' (playerID, seasonID)'
' values (?,?)',
# Return a success message
Professional Python Services directly from the Source (#1, Aug 26 2010)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
::: Try our new mxODBC.Connect Python Database Interface for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
More information about the Zope-DB