Я делаю простую страницу регистрации в Flask, используя sqlite. Я сделал тестовый прогон вручную, и это сработало:
import sqlite3
db = sqlite3.connect('database.db')
c = db.cursor()
username = "bb"
password = "vv"
c.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
db.commit()
Но я не могу заставить это работать в моем app.py(ниже очень упрощенная версия)
@app.route("/register", methods=["GET", "POST"])
def register():
if request.method == "POST":
username = request.form.get("username")
password = request.form.get("password")
confirmation = request.form.get("confirmation")
try:
c.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
db.commit()
return render_template("login.html")
except:
return apology("username is already registered")
else:
return render_template("register.html")
Меня перенаправляют на мою страницу с извинениями (имя пользователя уже зарегистрировано). Моя база данных.db пуста :( Любая помощь будет оценена, новичок в сообществе и кодировании.
спасибо за предложение, я новичок, чтобы попробовать / кроме. Я сделал «traceback.print_exc()» и обнаружил проблему.
Проблема: «Объекты SQLite, созданные в потоке, могут использоваться только в этом же потоке».
Я просто добавил курсор, и теперь он работает
c = c = db.cursor()
почему бы вам не добавить в раздел
except
несколько «распечатать информацию об исключении», чтобы увидеть, что происходит на самом деле?