Pythonanywhere [Flask] - 创建一个 MySQL 数据库

Pythonanywhere [Flask] - Creating a MySQL database

我想创建一个数据库来存储所有密码。我按照本教程进行操作,当我制作的与他们所做的完全相同时它就起作用了,但现在我想制作自己的数据库。我实际上已经创建了一个数据库,它显示了正确的表并且 "describe (tablename)" 也可以工作,但是当我执行 select * from (tablename); 时,它 returns 空集(0.00 秒)。这意味着没有存储任何内容,但我在我的网站上设置了 post 一些密码。

这是flask_app.py代码:

from flask import Flask, render_template, request, redirect
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["DEBUG"] = True

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="*******", //I filled these in
    password="*******",
    hostname="*******.mysql.pythonanywhere-services.com",
    databasename="******$wachtwoorden",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
db = SQLAlchemy(app)

class Wachtwoord(db.Model):

    __tablename__ = "wachtwoorden"

    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.String(80))

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

def main():

    if request.method == "GET":
        print("in request.method = get")
        return render_template("main_page.html")

    if (request.form["Knop1"] == "1912"):
        print ('Het wachtwoord is geraden:', request.form["Knop1"])
        return redirect("http://tegelizr.nl/tegeltjes/dat-klopt-als-een-bus.png")

    else:
        print ('Iemand heeft een het wachtwoord geraden:', request.form["Knop1"])
        return render_template("main_page.html")

    wachtwoord = Wachtwoord(content=request.form["Knop1"])
    db.session.add(wachtwoord)
    db.session.commit()

这是我的main_page.html

<form method="POST">
     <p>
        <center>
           <br><br><br><h2>Wat is het wachtwoord?</h2><input type="text" name="Knop1" value = "" />
           <br><br><input type="image" src="http://www.kryshiggins.com/wordpress/wp-content/themes/KrystalsNewMergedThemeOMG/Krys_Images/Next_Arrow.png" alt="Submit" width="30" height="30"><br><br><br>
        </center>
    </form>

那么如何正确存储密码呢? 抱歉,wachtwoord 表示密码。哦,这可能有点令人困惑,因为您只需要提供正确的密码,即 1912,那我为什么要存储尝试过的密码呢?好吧,这只是对我的考验,如果这行得通,我知道以后该怎么做。

谢谢。

您正在执行 return 以在模板能够调用您的数据库插入之前呈现您的模板。试试这个:

def main():

    if request.method == "GET":
        print("in request.method = get")
        return render_template("main_page.html")

    if (request.form["Knop1"] == "1912"):
        print ('Het wachtwoord is geraden:', request.form["Knop1"])
        wachtwoord = Wachtwoord(content=request.form["Knop1"])
        db.session.add(wachtwoord)
        db.session.commit()
        return redirect("http://tegelizr.nl/tegeltjes/dat-klopt-als-een-bus.png")

    else:
        print ('Iemand heeft een het wachtwoord geraden:', request.form["Knop1"])
        return render_template("main_page.html")