簡體   English   中英

得到錯誤 TypeError: execute() 沒有關鍵字 arguments

[英]Got the error TypeError: execute() takes no keyword arguments

我正在嘗試使用 python 和 sqlite3 構建一個注冊/登錄系統。 我的代碼似乎有問題。

        if request.form.get("password") != request.form.get("confirm"):
            return apology(" Passwords doesn't match")

#       try:

        prim_key = c.execute("INSERT INTO accounts (username, hash) VALUES (:username, :hash)",
                                 username = request.form.get("username"),
                                 hash = generate_password_hash(request.form.get("password")))
        conn.commit()

#       except:
#           return apology("Sorry! username already exists!", 403)
#       if prim_key is None:
#           return apology("Failed to register! something went wrong!", 403)
#       user_if = prim_key
        return redirect("/")
    else:
        return render_template("register.html")

我評論了一些行,以確定是否有問題。 在引用之前,我不斷收到錯誤“對不起。用戶名已經存在!”。

現在,在我運行應用程序時引用這些行后,我得到了

文件“application.py”,第 76 行,寄存器 prim_key = c.execute("INSERT INTO accounts (username, hash) VALUES (:username, :hash)", TypeError: execute() 沒有關鍵字 arguments

我想知道我是否遺漏了這些是我導入的模塊。

import sqlite3
from flask import Flask, flash, jsonify, redirect, render_template, request, session
from werkzeug.security import check_password_hash, generate_password_hash
import secrets

如果我不能在這里使用關鍵字 arguments,有沒有辦法解決這個問題? 還是我做錯了整個事情? 我是 Python 的新手,所以我不知道這是否只是一個愚蠢的問題。 我幾乎閱讀了所有類似這樣的問題,但我想不出任何辦法來完成這項工作。 所以任何幫助表示贊賞。 感謝您的時間!

如錯誤所示, execute不使用任何關鍵字 arguments。 您只需要傳遞一個值的字典:

prim_key = c.execute("INSERT INTO accounts (username, hash) VALUES (:username, :hash)",
                     { 'username': request.form.get("username"), 
                       'hash': generate_password_hash(request.form.get("password"))
                     })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM