【问题标题】:Pythonanywhere [Flask] - Creating a MySQL databasePythonanywhere [Flask] - 创建 MySQL 数据库
【发布时间】:2017-05-31 18:33:11
【问题描述】:

我想创建一个存储所有密码的数据库。我按照本教程进行操作,当我制作的内容与他们完全相同时,它就可以工作,但现在我想制作自己的数据库。我实际上已经创建了一个数据库,它显示了正确的表,并且“描述(表名)”也可以,但是当我从(表名)中选择 * 时,它返回空集(0.00 秒)。这意味着没有存储任何内容,但我确实在我的网站上发布了一些密码。

这是 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,那么我为什么要存储尝试过的密码呢?好吧,这对我来说只是一个测试,如果这有效,我知道将来该怎么做。

谢谢。

【问题讨论】:

    标签: python mysql flask pythonanywhere


    【解决方案1】:

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

    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")
    

    【讨论】:

    • 小问题,如果我想添加另一个包含某人姓名的文本输入怎么办。这是 request.form["Knop2"]。我将如何使它像“request.form[“Knop2”]:request.form[“Knop1”]”一样存储到我的数据库中,换句话说,“名称:密码”
    • @Jip1912 我建议阅读此链接:docs.sqlalchemy.org/en/latest/orm/tutorial.html。它将为您提供使用 SQLAlchemy 所需了解的所有基础知识。也可以看看这个网站,比较全面一点:rmunn.com/sqlalchemy-tutorial/tutorial.html
    • 我会看的,但现在我真的没有时间。为什么 wachtwoord = Wachtwoord(content=request.form["Knop2"]:, request.form["Knop1"]) 不起作用?我该怎么做?我明天会读。
    • 尝试:Wachtwoord(content=request.form.get("Knop2"), other_column=request.form.get("Knop1"))。这只是伪代码,没有看到您的新列的实际数据库定义。我给你的第二个链接会给你更好的方法来做到这一点。
    • 我是这样做的:pastebin.com/169Ut2QY,但正如您在 pastebin 中看到的那样,它返回 poging-null,然后返回 null-name。我怎样才能使它成为 poging-name?添加它们后我会提交对吗?
    猜你喜欢
    • 2012-06-11
    • 2021-05-22
    • 2015-05-25
    • 2015-05-31
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多