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")
我想创建一个数据库来存储所有密码。我按照本教程进行操作,当我制作的与他们所做的完全相同时它就起作用了,但现在我想制作自己的数据库。我实际上已经创建了一个数据库,它显示了正确的表并且 "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")