TypeError: невозможно выбрать объект '_thread._local' - PullRequest
0 голосов
/ 03 апреля 2020

Я сделал регистр маршрута и функции, которые будут добавлять новых пользователей в базу данных. Код работает нормально, сообщения мигают в соответствии с условием, но единственная проблема заключается в том, что когда я пытаюсь зарегистрировать нового пользователя, он говорит;

  Traceback (most recent call last):
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 1952, in full_dispatch_request
    return self.finalize_request(rv)
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 1969, in finalize_request
    response = self.process_response(response)
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2268, in process_response
    self.session_interface.save_session(self, ctx.session, response)
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask_session\sessions.py", line 354, in save_session
    self.cache.set(self.key_prefix + session.sid, data,
  File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\werkzeug\contrib\cache.py", line 839, in set
    pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
TypeError: cannot pickle '_thread._local' objectI am trying to run following code 

Мой код;

@app.route("/register", methods=["GET", "POST"])
def register():



 username = request.form.get("username")
    email =  request.form.get("email")
    password = request.form.get("password")
    confirm = request.form.get("confirm-password")
    data = db.execute("SELECT username, email FROM users WHERE username = :username AND email = :email",


                                                                              {"username":username,
                                                                                        "email":email} ).fetchone()
if request.method == "POST":

    if password != confirm:
        flash("Passwords do not match", "danger")

    if username == "" or email == "" or password == "" or confirm == "":
         flash("Please fill all fields", "danger")

    if data != None:
         flash("Username or email already exists", "danger")

    if data == None and password == confirm:
        db.execute("INSERT INTO users (username, email, password) VALUES (:username, :email, :password)", 
                                                                                    {"username": username,
                                                                                    "email": email,
                                                                                    "password": password})
        db.commit()
        session["username"] = username
        print(f"{username}")
        id = db.execute("SELECT id FROM users WHERE username = :username", {"username":username})
        session["id"] = id
        #take to books.html and render the list of books
        return redirect(url_for('books'))

    return redirect(url_for('register'))

return render_template("register.html", register = "register")

Несмотря на то, что я получаю TypeError, все же, когда я проверяю базу данных, я вижу, что новый пользователь вставлен в базу данных.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...