【发布时间】:2018-12-30 09:33:48
【问题描述】:
我在做 CS50 项目,目前的任务是创建一个注册页面。用户填写表格并按下按钮。所以它必须插入到我的 PostgreSQL 数据库中。但是当我填写表格并按“注册”时,我收到了这个错误:
StatementError: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter u'surname' [SQL: u'INSERT INTO users (name, surrname, nickname, password) VALUES (%(name)s, %(surname)s,%(nickname)s, %(password)s'] [parameters: [{':password': u'', ':name': u'John', ':surname': u'Young', ':nickname': u'yolojohny1'}]] (Background on this error at: http://sqlalche.me/e/cd3x)
books.py
import os
from flask import Flask, session, render_template, request
from flask_session import Session
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
app = Flask(__name__)
# Check for environment variable
if not os.getenv("DATABASE_URL"):
raise RuntimeError("DATABASE_URL is not set")
# Configure session to use filesystem
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
# Set up database
engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))
@app.route("/")
def index():
return render_template("register.html")
@app.route('/register', methods=["POST"])
def register():
"REGISTRATION PROCESS"
# Get form information
name = request.form.get("name")
surname = request.form.get("surname")
nickname = request.form.get("nickname")
password = request.form.get("password")
db.execute("INSERT INTO users (name, surrname, nickname, password) VALUES (:name, :surname,"
":nickname, :password", {":name": name, ":surname": surname, ":nickname": nickname,
":password": password})
db.commit()
return render_template("success.html")
注册.html:
{% extends "layout.html" %}
{% block title %}
New User
{% endblock %}
{% block body %}
<h1>Register new account</h1>
<form action="{{ url_for('register') }}" method="post">
<div class="form-group">
<input class="form-control" name="name" placeholder="First Name">
</div>
<div class="form-group">
<input class="form-control" name="surname" placeholder="Second Name">
</div>
<div class="form-group">
<input class="form-control" name="nickname" placeholder="Nickname">
</div>
<div class="form-group">
<input type="password" class="form-control" name="password" placeholder="Password">
</div>
<div class="formgroup">
<button class="btn btn-primary">Create account!</button>
</div>
</form>
{% endblock %}
数据库:
CREATE TABLE "users" (
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL,
surrname VARCHAR NOT NULL,
nickname VARCHAR NOT NULL,
password VARCHAR NOT NULL
)
我该怎么办?我用谷歌搜索了这个错误,但没有任何帮助。
【问题讨论】:
标签: python postgresql flask sqlalchemy