Ich versuche, meine eigene Datenbank zu erstellen, aber ich erhalte einen TypeError: __ init __() hat ein unerwartetes Schlüsselwort Argument 'Benutzername'.TypeError: __init __() hat ein unerwartetes Schlüsselwort Argument 'Benutzername'
Ich folgte Dokumentation und ähnliche Stack-Überläufe, aber ich bekomme immer noch den gleichen Fehler. Es scheint auch keinen Unterschied zu machen, wenn ich einen Konstruktor init habe oder die Methode db.create_all() verwende.
Was mache ich falsch? Ich jemand bereit ist, mir zu helfen, danke :)
from flask import Flask, flash, redirect, render_template, request, session, url_for
from flask_sqlalchemy import SQLAlchemy
from flask_session import Session
from passlib.apps import custom_app_context as pwd_context
from tempfile import gettempdir
# configure application
app = Flask(__name__)
#Flask-SQLAlchemy https://www.tutorialspoint.com/flask/flask_sqlalchemy.htm
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///froshims3.db"
db = SQLAlchemy(app)
# configure session to use filesystem (instead of signed cookies)
app.config["SESSION_FILE_DIR"] = gettempdir()
app.config["SESSION_PERMANENT"] = False
Session(app)
class users(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
username = db.Column(db.String)
hash = db.Column(db.String)
# def __init__(self, username, password):
# self.username = username
# self.password = password
#db.create_all()
@app.route("/")
def index():
return apology("TODO")
@app.route("/register", methods=["GET", "POST"])
def register():
"""Register user."""
if request.method == "GET":
# redirect user to register page
return render_template("register.html")
else:
# query database to see if username doesn't exist.
rows = db.session.query("SELECT * FROM users WHERE username = :username", username=request.form.get("username"))
if len(rows) == 1:
return apology("username already exist")
# hash: http://stackoverflow.com/questions/7627752/secure-authentication-system-in-python
hash = pwd_context.encrypt(request.form["password"])
user = Users(request.form["username"], request.form["dorm"])
db.session.add(user)
db.session.commit()
user_id = db.session.query("SELECT id from users WHERE username = :username", username=request.form.get("username"))
session["user_id"]= user_id
return apology("Well Done")
Ihnen sehr danken. Plötzlich bekomme ich Kompilierprobleme (mit genau dem gleichen Code wie gestern): "Instanz von SQLAlchemy hat keine Spalte, String und Integer-Member. Und 'Query' und 'Add' erkennt er auch nicht. Also muss ich zuerst Finde das heraus und dann werde ich deine Antwort versuchen! Danke :) – emma