gpt4 book ai didi

python - MySql 查询的 Flask HTML 表单字段在 macOS Sierra 上返回错误

转载 作者:行者123 更新时间:2023-11-29 18:16:49 25 4
gpt4 key购买 nike

Stackoverflow 社区您好

自从升级到 macOS Sierra 和 MariaDB 10.2.9 以来,我一直遇到一些奇怪的问题,并且代码(与我之前在 Windows 上使用的完全相同)现在抛出“TypeError: 'NoneType' object”是不可迭代的”。我不明白为什么,但如果您有任何想法,我将不胜感激。

代码与我去年的问题中的代码相同: FLASK HTML field for Mysql query

我所做的就是使用 PyMysql、Flask 和 MariaDB(Mysql) 从 HTML 表单方法向 Mysql 数据库发出请求

这里是表单字段和要显示的表格(这与其他查询一起使用):

 <form method="GET" action>
<div class="form-group">
<div class="col-sm-3">
<input type="text" placeholder="City Name" name="City_Name" class="form-control">
</div>
</div>
<div class="form-group">
<div class="col-sm-2">
<input type="submit" value="SEARCH" class="btn btn-primary btn-block">
</div>
</div>
</form>

<table class="table table-striped">


<tr>
<th>PO_Number</th>
<th>Plant Name</th>
<th>Material</th>
</tr>


{% for row in tabledata %}
<tr>

<td>{{ row['PO_Number'] }}</td>
<td>{{ row['PlantName'] }}</td>
<td>{{ row['MaterialName'] }}</td>
</tr>
{% endfor %}

这里是 Flask 路线:

from flask import Flask, render_template, request, url_for
from dbhelper_single_search import DBHelper


app = Flask(__name__)
DB = DBHelper()

@app.route('/table')
def table():
city = request.args.get('City_Name', 'New York')
try:
tabledata = DB.table_inputs(city)
except Exception as e:
print(e)
tabledata = None
return render_template("table.html", tabledata=tabledata)

这里是数据库连接:

import pymysql

connection = pymysql.connect(host='localhost',user='root',password='',db='test',cursorclass=pymysql.cursors.DictCursor)

class DBHelper:

def table_inputs(self, cityx):
connection = self.connect()
PLN = "**%s**" % cityx
try:
query = "SELECT PersonID, LastName, FirstName, Address, City FROM persons WHERE City like '%s'" %(PLN);
with connection.cursor(pymysql.cursors.DictCursor) as cursor:
cursor.execute(query)
return cursor.fetchall()
finally:
connection.close()

我想再次询问一下,在我当前的 MacOS Maria DB 设置和之前的堆栈上使用此功能时,是否需要注意是否存在差异。奇怪的是以前可以工作的代码现在不再工作了。

提前谢谢

最佳答案

虽然我承认我并不完全理解最终的工作代码,但我想分享一个工作版本以供将来引用。

数据库配置文件:

test = False
db_username = "root"
db_password = ""

带有查询的 DBHelper 文件:

导入pymysql导入数据库配置

DBHelper 类:

def connect(self, database="test"):
return pymysql.connect (host='localhost',
user=dbconfig.db_username,
passwd=dbconfig.db_password,
db=database)
def table_inputs2(self, cityx):
connection = self.connect()
PLN = "%s" % cityx
try:
query = "SELECT PersonID, LastName, FirstName, Address, City FROM persons WHERE City='%s'" %(PLN);
with connection.cursor(pymysql.cursors.DictCursor) as cursor:
cursor.execute(query)
return cursor.fetchall()
finally:
connection.cursor

应用程序路线:

@app.route('/trtdtable2')
def trtdtable2():
cityx = request.args.get('City_Name','New York')
try:
tabledata = DB.table_inputs2(cityx)
except Exception as e:
print(e)
tabledata = None
return render_template("trtdtable.html", tabledata=tabledata)

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

HTML 表单如上所示。

关于python - MySql 查询的 Flask HTML 表单字段在 macOS Sierra 上返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46955511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com