On Fri, Jul 4, 2014 at 11:19 AM, 'Frank Liou' via sqlalchemy
<sqlalchemy@googlegroups.com> wrote:
> I try to insert username in to my table
>
> it show
>
> Internal Server Error
> The server encountered an internal error and was unable to complete your
> request. Either the server is overloaded or there is an error in the
> application.
>
> it maybe mean no request
>
> i try to change username to '123123'
>
> then it works....
>
> what's problem with this?
>
>
>
> @app.route('/user/<username>',methods=['GET','POST'])
> def hello(username):
>         if request.method=='POST':
>             save_friends(username)
>             return username
>
>
> def save_friends(username):
>     conn = engine.connect()
>     conn.execute("INSERT INTO friends(name) VALUES(username)")
>

Python doesn't automatically replace variable names in strings with
their values, so you are sending this exact string to the database:

    INSERT INTO friends(name) VALUES(username)

...which is not valid SQL.

Instead, you should use SQLAlchemy's text() function and bound
parameters to pass the actual username to the database, something like
this:

    import sqlalchemy as sa

    def save_friends(username):
        conn = engine.connect()
        statement = sa.text('INSERT INTO friends(name) VALUES(:username)')
        conn.execute(statement, username=username)

Hope that helps,

Simon

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to