Разобрался сам, при составлении вопроса =).Отредактировал название вопроса соответственно.
Виновник оказался пропущенным через запятую между аргументами cursor.execute()
(довольно тривиально, как я и ожидал).
Итак, строка:
cursor.execute('INSERT INTO Users (activation_token, login, email, password, name) VALUES (?, ?, ?, ?, ?)' (activation_token, request.form['login'], request.form['email'], hashed_password, request.form['name']))
должно быть:
cursor.execute('INSERT INTO Users (activation_token, login, email, password, name) VALUES (?, ?, ?, ?, ?)', (activation_token, request.form['login'], request.form['email'], hashed_password, request.form['name']))
Я также узнал от этого ответа , что для того, чтобы INSERT
действительно произошло, connection.commit()
долженвызываться после cursor.execute('INSERT ...')
(один или несколько).
Таким образом, окончательный (исправленный) код должен выглядеть примерно так:
db_connection = get_db()
cursor = db_connection.cursor()
hashed_password = werkzeug.security.generate_password_hash(request.form['password'], method='pbkdf2:sha512', salt_length=25)
activation_token = werkzeug.security.generate_password_hash(request.form['login'], method='pbkdf2:sha512', salt_length=25)
cursor.execute('INSERT INTO Users (activation_token, login, email, password, name) VALUES (?, ?, ?, ?, ?)', (activation_token, request.form['login'], request.form['email'], hashed_password, request.form['name']))
db_connection.commit()
cursor.close()
close_connection(None)