Python Flask搜索MySQL数据库出现()
我已经在Python Flask应用程序上工作了一段时间了。我已经让它连接到mysql数据库并进行搜索,但它抛出的只是() 我不确定它是否找不到任何东西或有错误,但数据库中有一项 这是主.py文件Python Flask搜索MySQL数据库出现(),python,mysql,database,search,flask,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("/
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}}
其中{{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>
您至少需要遍历光标
<ol>
{% for row in rows %}
<li> row data: {{ row }}</li>
{% endfor %}
</ol>
所以再过几个小时,我终于做到了。我并不是百分之百地理解错在哪里 但我最后的代码是
@app.route('/hello/', methods=['POST'])
def hello():
error = ""
rows = None
user_input = None
data = None
try:
c, conn = connection()
if request.method == "POST":
c.execute("SELECT * FROM titles WHERE name = %s ", (request.form["search"],))
data = c.fetchall()
user_input = (request.form["search"],)
return render_template("results.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)
所以我相信这是在做,我错的地方是,在Flask连接到数据库并且用户发出了搜索请求之后。MySQL执行行“SELECT*FROM titles WHERE name=%s
”,因此这行使用请求选择表title
中的所有行。表单[“search”]
用用户搜索的内容替换%s
。我不知道的是,c.execute需要一个列表或元组作为它的第二个参数。在请求和周围使用()会变成这样
最后,我将数据存储到arg数据和fetchall中,然后使用{{data}
和for循环将其输出到HTML
非常感谢bakkal帮我找到答案 再过几个小时,我终于做到了。我并不是百分之百地理解错在哪里 但我最后的代码是
@app.route('/hello/', methods=['POST'])
def hello():
error = ""
rows = None
user_input = None
data = None
try:
c, conn = connection()
if request.method == "POST":
c.execute("SELECT * FROM titles WHERE name = %s ", (request.form["search"],))
data = c.fetchall()
user_input = (request.form["search"],)
return render_template("results.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)
所以我相信这是在做,我错的地方是,在Flask连接到数据库并且用户发出了搜索请求之后。MySQL执行行“SELECT*FROM titles WHERE name=%s
”,因此这行使用请求选择表title
中的所有行。表单[“search”]
用用户搜索的内容替换%s
。我不知道的是,c.execute需要一个列表或元组作为它的第二个参数。在请求和周围使用()会变成这样
最后,我将数据存储到arg数据和fetchall中,然后使用{{data}
和for循环将其输出到HTML
非常感谢bakkal帮我找到答案 对不起,花了这么长时间,我想这是排的对不起,花了这么长时间,我想这是排的谢谢你的帮助,但是结果页面现在什么都没有了。我已将其添加到python脚本“c,conn=connection()cursor=c.cursor(dictionary=True)cursor.executemany(“'SELECT*FROM titles WHERE name=%s'”,request.form['search'])cursor.executemany=行返回呈现模板(“results.html”,rows=rows),并使用您的{%for rows%}{{row}{%endfor%}我不确定我使用的是MySQL的Dict,对吗?抱歉,如果这很难阅读,还是什么都没有,所以搜索没有结果。我非常确定我的连接是正确的,我会尝试其他一些连接方式来确保,它是从另一个脚本中提取连接。对不起,花了这么长时间,我犯了一个愚蠢的错误,所以我选择了sed count=cursor.execute(''SELECT count(*)FROM titles WHERE name'')[0];和{{count}在html中,但它仍然没有输出任何内容。链接到站点,不确定这有多大帮助吗?因此,在使用它之后,它现在只显示“无”,因此我猜它在数据库中找不到任何内容?感谢您的帮助,但结果页现在没有结果。我已将此添加到python脚本中'c,conn=connection()cursor=c.cursor(dictionary=True)cursor.executemany('SELECT*FROM titles WHERE name=%s',request.form['search'])cursor.executemany=rows return render_模板(“results.html”,rows=rows)”,并将{%用于rows%}{{row}}{%endfor%}我不确定我使用的是MySQL的Dict,对吗?抱歉,如果这很难阅读,还是什么都没有,所以搜索没有结果。我非常确定我的连接是正确的,我会尝试其他一些连接方式来确保,它是从另一个脚本中提取连接。对不起,花了这么长时间,我犯了一个愚蠢的错误,所以我选择了sed count=cursor.execute(''SELECT count(*)FROM titles WHERE name'')[0];和{{count}在html中,但它仍然没有输出任何内容。链接到该站点,不确定这有多大帮助吗?因此,在使用它之后,它现在只会说没有,所以我猜它在数据库中找不到任何内容?