exec statement Syntax Error on string pulled from MySQL

gregpinero at gmail.com gregpinero at gmail.com
Tue Apr 10 14:19:01 EDT 2007


On Apr 10, 4:49 am, Georg Brandl <g.bra... at gmx.net> wrote:
> gregpin... 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.

Wow,
exec code.replace('\r','') in context
works!  Now I just have to figure out how the '\r' are getting in
there.  I entered that piece of code using PHPMyAdmin so that could be
doing it, or MySQLdb could be doing it when returning it, or it could
be something about the DB encoding!  I'll post back if I find out.

Thanks for help!

-Greg




More information about the Python-list mailing list