David Bear wrote:
> The dictionary keys are the field names. The values are the values to be
> inserted.
>
> I am looking for a good pythonic way of expressing this, but I have a
> problem with the way lists are represented when converted to strings.
>
> Lets say my dictionary is
>
> data = {"fname": "todd", "lname": "Bush"}
> fields = data.keys()
> vals = []
> for v in fields:
> vals.append(data[v])
>
> sql = """INSERT INTO table (%s) VALUES (%s);""" % (fields, vals)
>
> but fields and vals are represented as lists. So, then I need to strip the
> [] from them, but then ... there must be an easier way.
>
> Any advise?
1) use parameters to pass in the values (see
http://www.python.org/peps/pep-0249.html )
2) use parameters to pass in values
3) use parameters to pass in values
4) here's a simplified version of your code:
data = {"fname": "todd", "lname": "Bush"}
fields = data.keys()
values = data.values()
cursor.execute(
"INSERT INTO table (%s) VALUES (%%s);" % (",".join(fields)),
*values
)
(this assumes that your database uses %s for parameters; if it uses
? instead, replace "%%s" with "?". see the paramstyle documentation
in the db-api docs (pep 249) for more info)
</F>
--
http://mail.python.org/mailman/listinfo/python-list