Gabriel Genellina wrote: > En Fri, 14 Sep 2007 01:57:43 -0300, Gavin Tomlins <[EMAIL PROTECTED]> > escribi�: > >> I'm trying to work out when using a format specifier I get spaces in the >> resulting string. Eg. Looking at the outputted string you can see that >> there are spaces after T5LAT, F4LAT etc. as I result from trying to keep >> the >> code aligned > > - You should *not* build the SQL text yourself; use a parametrised query > instead. It's not only easier to write; it's safer, less error prone, and > maybe faster. See this previous post > <http://groups.google.com/group/comp.lang.python/browse_thread/thread/b8c1ef8471f55995/> > > - Spaces are not significant in SQL, but you may have your own reasons to > format the SQL text in a certain way. In addition to the ideas already > menctioned on that thread (avoid \, use parenthesis, and auto-concatenate > adjacent strings), you may use a triple-quoted string + function dedent > from textwrap module: > > py> fmtSqlP300Amp = textwrap.dedent('''\ > ... UPDATE Patient SET > ... O2AMP = "%s", O1AMP = "%s", OzAMP = "%s", PzAMP = "%s", > ... P4AMP = "%s", CP4AMP = "%s", T6AMP = "%s", C4AMP = "%s", > ... TP8AMP = "%s", T4AMP = "%s", T5AMP = "%s", P3AMP = "%s" > ... WHERE Pat_Id = "%s"''') > py> print fmtSqlP300Amp > UPDATE Patient SET > O2AMP = "%s", O1AMP = "%s", OzAMP = "%s", PzAMP = "%s", > P4AMP = "%s", CP4AMP = "%s", T6AMP = "%s", C4AMP = "%s", > TP8AMP = "%s", T4AMP = "%s", T5AMP = "%s", P3AMP = "%s" > WHERE Pat_Id = "%s" > > I hope any of these ideas will fit your own needs.
Completely agree that this should not be written by hand. But if you absolutely *must* you might try something like this: >>> fmt = """ ... UPDATE Patient SET ... 02AMP = "%(o2amp)s" ... O1AMP = "%(o1amp)s" ... ... ... """ >>> args = { ... 'o1amp': "2.77413", ... 'o2amp': "2.43119" ... } >>> print fmt % args UPDATE Patient SET 02AMP = "2.43119" O1AMP = "2.77413" ... >>> Ian -- http://mail.python.org/mailman/listinfo/python-list