exec statement Syntax Error on string pulled from MySQL

Georg Brandl g.brandl at gmx.net
Tue Apr 10 04:49:37 EDT 2007


gregpinero at gmail.com schrieb:
> It's the strangest thing,  I'm pulling some text out of a MySQL table
> and trying to run exec on it, and it keeps giving me a syntax error,
> always at the end of the first line.
> 
> Thanks in advance for any help.  I'm really stuck on this one!
> 
> -Greg
> 
> I'm not sure what information would be most useful but here's a start:
> 
> The last code I stored in the table and pulled out was simply:
> print 'greg'
> print 'greg2'
> 
> To which my error log says:
> Traceback (most recent call last):
>   File "/home/public/web/webapi.py", line 303, in wsgifunc
>     result = func()
>   File "/home/public/web/request.py", line 125, in <lambda>
>     func = lambda: handle(inp, fvars)
>   File "/home/public/web/request.py", line 61, in handle
>     return tocall(*([urllib.unquote(x) for x in args] + fna))
>   File "/home/public/EZsession.py", line 119, in proxyfunc
>     return func(self, *args, **kw)
>   File "/home/htdocs/code.py", line 94, in POST
>     print utility.run(name,revision,inp)
>   File "/home/public/utility.py", line 177, in run
>     exec code+'\n' in context
>   File "<string>", line 1
>     print 'greg'
>                 ^
> SyntaxError: invalid syntax
> (Note the ^ actually appears under after the ' )

You have Windows line endings (\r\n) in the string, which Python doesn't like.

Don't store it like that, or if you must, do a .replace('\r', '') before 
exec'ing it.

Georg

-- 
Thus spake the Lord: Thou shalt indent with four spaces. No more, no less.
Four shall be the number of spaces thou shalt indent, and the number of thy
indenting shall be four. Eight shalt thou not indent, nor either indent thou
two, excepting that thou then proceed to four. Tabs are right out.




More information about the Python-list mailing list