I'm trying to enter a value from an HTML form into a postgresql database, and I'm getting a 500 error. It works fine if I manually enter the values into the program like this...
@app.route('/add', methods=['POST'])
def add():
name = request.form['name']
employer_id = random.random()%100000;
g.conn.execute("INSERT INTO employers(employer_id,name) VALUES ('C005329438','Twitter')")
return redirect('/')
But I get an error every time I send it the value from the form like this
@app.route('/add', methods=['POST'])
def add():
name = request.form['name']
employer_id = random.random()%100000;
g.conn.execute("INSERT INTO employers(employer_id,name) VALUES (%d,%s)", employer_id, name)
return redirect('/')
asked Apr 10, 2016 at 0:18
Andrew Feather
1833 silver badges14 bronze badges
1 Answer 1
g.conn.execute("INSERT INTO employers(employer_id,name) VALUES (%d,%s)", employer_id, name)
should probably be:
from sqlalchemy import text
g.conn.execute(text("INSERT INTO employers(employer_id,name) VALUES (:id, :name)"),
{"id": str(employer_id), "name": name})
text() provides backend neutral support for bind parameters.
Your employer id attribute seems to be a text type too according to your successful query, so I added the str() wrapping.
answered Apr 10, 2016 at 0:21
Ilja Everilä
53.4k9 gold badges138 silver badges142 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
default