On Apr 24, 2006, at 11:35, Patty wrote: > I have the following code: > > UPDATE mytable SET col1 = %s, col2 = %s, col3 = %s, col4 = %s, > col5 = %s, col6 = %s WHERE name = %s > """, (tuple(entries))) > In this example, entries is a list of numbers and the last element is > a name of > a target. > > This works fine. But, there will be times when new columns will be > added based > on a dictionary I have. I've been asked not to hard code the column > names (i.e. > col1, col2, etc.). I need to know if it is possible to put > placeholders instead > of column names (i.e. %s=%s -> column name = column value). If so, > what is the > right syntax for that?
Unfortunately, using the %s syntax is going to put the name of the column in quotes, and so MySQL will think you're trying to assign one string to another, rather than a string to a column. Instead, you'll need to piecemeal your string from parts manually, like this: d = { ... your dictionary of column names and values } d_items = d.items () # doing it this way to ensure that we dont get inconsistent ordering query_string = "update mytable set " + ",".join ( [ key + "=%s" for key, value in d_items ] ) cursor.execute ( query_string, tuple ( [ value for key, value in d_items ] ) ) -- ("`-/")_.-'"``-._ Chris Cogdon <[EMAIL PROTECTED]> . . `; -._ )-;-,_`) (v_,)' _ )`-.\ ``-' _.- _..-_/ / ((.' ((,.-' ((,/ fL _______________________________________________ DB-SIG maillist - DB-SIG@python.org http://mail.python.org/mailman/listinfo/db-sig