formating query with empty parameter
Peter Otten
__peter__ at web.de
Mon May 25 08:50:32 EDT 2009
Pet wrote:
> > someone wrote:
> > > Hello!
> >
> > > if one of parameter in values is empty, I'm getting
> > > TypeError: not enough arguments for format string
> >
> > > But how to handle such situation? It is ok for DB, that some of values
> > > are empty.
> >
> > > def __insert(self, data):
> > > query = """
> > > BEGIN;
> > > INSERT INTO table
> > > (a, b, c, d, e, f, g)
> > > VALUES
> > > (%s, %s, %s, %s, %s, %s, %s);
> > > COMMIT;
> > > """
> > > values = [
> > > data['a'],
> > > data['b'],
> > > data['c'],
> > > data['d'],
> > > data['e'],
> > > data['f'],
> > > data['g']
> > > ]
> > > self.db.execute(query, *values)
> >
> > You need to pass
> >
> > None
>
> Hi,
>
> thanks for reply.
> Unfortunately, it doesn't work. Still getting TypeError: not enough
> arguments for format string
>
The code you posted doesn't match that error message. You have to invoke
cursor.execute() as
cursor.execute(query, values) # correct
, not
cursor.execute(query, *values) # wrong
or
cursor.execute(query % values) # wrong
The length of values must match the number of "%s" occurences in the sql
query, but as Diez indicated you may pass None for every field that allows a
NULL value in the table.
Peter
More information about the Python-list
mailing list