Python Flask 搜索 MySQL 数据库出现()

标签 python mysql database search flask

我开发 Python Flask 应用程序已经有一段时间了。我已经让它连接到 mysql 数据库并进行搜索,但它抛出的只是 ()。

我不确定它是否没有找到任何内容或存在错误,但数据库中有一项。

这是主 .py 文件

from flask import Flask, render_template, request, url_for, redirect, flash
from connect_script import connection

app = Flask(__name__)

@app.route("/")
def homepage():
    flash("Hello")
    return render_template("main.html")


@app.route('/hello/', methods=['POST'])
def hello():
    error = ""
    rows = None
    user_input = None
    data = None
    try:
        c, conn = connection()
        if request.method == "POST":
            data = c.execute("SELECT * FROM titles WHERE name='%s' ", (request.form["search"],))
            user_input = (request.form["search"],)
            return render_template("main.html", data=data, user_input=user_input)

    except Exception as e:
        error = (str(e))
        return render_template("main.html", error=error, user_input=user_input)


if __name__ == "__main__":
    app.run(debug=True)

此文件搜索数据库并仅提取 results.html,看起来像

<!DOCTYPE html>
<html land="en">

<head>
    <meta charset="utf-8">
    <title>Movie App</title>
    <link href="{{ url_for('static', filename='css/style.css') }}" />
    <link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
    <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
</head>
<body>
    {{ rows }}
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script type="text/javascript" src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>

</html>

其中 {{ rows }} 是它渲染的全部内容 () 没有别的。我一直在网上搜索试图找到答案,但到目前为止一无所获。

正在使用的表单如下所示

  <form class="navbar-form navbar-left" action="{{ url_for('hello') }}" method="POST" role="search">
    <div class="form-group">
      <input type="text" class="form-control" placeholder="Search" name="search" value="{{ request.form.search }}">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
  </form>

感谢您对此提供的任何帮助!

最佳答案

您至少需要遍历光标

<ol>
    {% for row in rows %}
        <li> row data: {{ row }}</li>
    {% endfor %}
</ol>

即便如此,它也不会很美观,因为在每次迭代中你都会得到一个元组(value_1, value_2, ...)

您可能想要使用MySQLdb.cursors.DictCursor,因为字典可能更容易在 flask 模板中使用,然后您可以使用例如{{row.column_1}} 比元组版本的 {{row[0]}} 更具可读性。

如果你仍然一无所获

您可以尝试在模板中显示与搜索匹配的行数:

Row count: {{rows.row_count}}

关于Python Flask 搜索 MySQL 数据库出现(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595976/

相关文章:

javascript - 如何实现Node.js的图片服务

javascript - 其他用户接收消息

时间:2019-05-17 标签:c#mysqlconnecterror

mysql - JPA ManyToMany 连接表自动设置索引唯一

database - PostgreSQL 规则有什么用?

python - 包含字符串文字的文档测试

python - 什么是 DT_VARIANT 张量?

python - 如何将函数参数的值传递给变量?

java - 如何使用 IDE (Android Studio) 从数据库 MySQL 设置 ArrayList 值?

python - 有没有办法在 Django 中的隐式多对多表上添加附加字段?