账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用Flask框架作两个关联式的下拉式选单,抓取资料库资料
    84
    0

    先前做好一个下拉式选单连结数据库,但是如果要作成双关联下拉式,选取好之后按钮,再从数据库抓取数据,却一直没办法,数据库如下:

    ID Model_Name value_without time
    0050 Multiple Regression 0.5781 13.03
    0050 Logistic Regression 0.587 10.93
    0051 Multiple Regression 0.5158 10.98
    0051 Logistic Regression 0.572 10.16
    0052 Multiple Regression 0.5734 14.67
    0052 Logistic Regression 0.5396 12.42

    当前写好的Python:

    class ETL(db.Model):
        tablename = 'etl1'
        ID = db.Column(db.Float)
        Model_Name = db.Column(db.String(255))
        value_without = db.Column(db.Float)
        time = db.Column(db.Float)
    
    @app.route('/',  methods=['GET', 'POST'])
    def index():
        etl1s = ETL.query.all()
        if 'eid' in request.form:
            eid = request.form.get('eid' ,type=float)
            step1 = ETL.query.get(eid)
            return render_template("index.html", etl1s=etl1s, step1=step1)
        return render_template("index.html", etl1s=etl1s)

    HTML:

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>ETL_SQL</title>
    </head>
    <body>
    
    <form method="POST">
        <select name="eid" id="eid">
            <option value="0050">0050</option>
            <option value="0051">0051</option>
            <option value="0052">0052</option>
        </select>
        <br>
        <input type="submit" value="Search" onClick="windows.location.reload()">
        <br>
    </form>
    
    {% if step1 %}
        <div>ID:{{step1.ID}}</div>
        <div>Model Name:{{step1.Model_Name}}</div>
        <div>Value Without:{{step1.value_without}}</div>
        <div>Time:{{step1.time}}</div>
    {% endif %}
    </body>
    </html>

    现在问题想要作成两个关联式下拉式选单,也就是在网页中让使用者下拉式选择栏位ID,再选择Model_Name,然后按按钮做确认,从数据库抓取所选择的ID、Model_Name、value_without及time栏位资料,那么在Python及HTML及要多加那些语法,恳请前辈们解法,谢谢。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Flask框架中,我们可以通过select元素的multiple属性来实现下拉式选单的关联查询。以下是一个简单的例子,演示如何使用Flask和 SQLAlchemy 来抓取数据库中的资料库资料:

      首先,我们需要创建一个简单的 Flask 应用,然后在其中创建一个用于查询数据库的 Flask-SQLAlchemy 模块。在 Flask 中,我们可以创建一个 BaseApp 类,其中包含一个 session 字典,用于存储用户会话的状态,以及一个 BaseSession 类,用于管理 SQLAlchemy 的数据库连接。

      ```python from flask import Flask, request, session from flask_sqlalchemy import SQLAlchemy

      app = Flask(name) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my_database.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)

      class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) email = db.Column(db.String(100), nullable=False)

      class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text(), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

      class ArticleSession(db.ModelSession): user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) articles = db.relationship('Article', backref='author')

      @app.route('/') def index(): user_id = session['user_id'] articles = ArticleSession.query(Article.user_id, Article.title).all() return render_template('index.html', articles=articles)

      if name == 'main': app.run(debug=True) ```

      在上述代码中,我们创建了两个模型:UserArticleUser 类包含一个 id 字段,用于唯一标识用户,以及一个 nameemail 字段,用于存储用户的基本信息和邮箱地址。Article 类包含一个 id 字段,用于唯一标识文章,以及一个 titlecontent 字段,用于存储文章的内容和作者。

      ArticleSession 类是 SQLAlchemy 模块中的一个对象,用于管理用户和文章之间的关联关系。我们创建了一个 user_id 字段,作为文章的作者 ID,然后使用 db.relationship 函数创建了一个外键,关联 User 类中的 id 字段。在查询文章时,我们使用了 ArtitleSession.query(Article.user_id, Article.title),表示查询 User 类中所有用户的 id 和对应的 title 对象。

      在 Flask 应用的 index 路由函数中,我们获取了当前会话的 user_id,然后查询 ArticleSession 中所有用户和对应的 id 对象。我们渲染了一个名为 index.html 的模板文件,其中包含了查询结果的列表。最后,我们将查询结果返回给前端,以供用户选择。

      注意,这个示例假设你已经安装了 Flask-SQLAlchemy 库,并在你的项目中创建了一个名为 my_database.db 的 SQLite 数据库文件。如果你的数据库不是 SQLite,你可能需要使用其他类型的数据库引擎,如 MySQL、PostgreSQL 或者 MongoDB,以及对应的 SQLAlchemy 版本。同时,这个示例中的 UserArticle 类表示了一个简单的关联关系,你可能需要根据你的实际需求来修改它们,例如添加更多的字段、使用关系表或者更改字段的数据类型。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部