亲爱的Python社区,
我遇到了一个无法解决的问题。我最近搬到了macOS Sierra版本10.12.6。
我所做的只是与MariaDB Mysql数据库连接。在启动程序时,初始连接和响应有效,因此所有输出都在那里,但是当我刷新页面时,我得到一个" TypeError:' NoneType'对象不可迭代"。如果我重新启动终端中的程序,它将再次工作 - 直到我刷新....
这里是代码:
from dbhelper2 import DBHelper
app = Flask(__name__)
DB = DBHelper()
@app.route('/trtdtable')
def trtdtable():
try:
tabledata = DB.table_inputs()
except Exception as e:
print(e)
tabledata = None
return render_template("trtdtable.html", tabledata=tabledata)
第二部分(数据库助手)
import pymysql
# Connect to the database
connection = pymysql.connect(host='localhost',user='root',password='',db='test',cursorclass=pymysql.cursors.DictCursor)
class DBHelper:
def table_inputs(self):
try:
query = "SELECT PersonID, LastName, FirstName, Address, City FROM persons";
with connection.cursor(pymysql.cursors.DictCursor) as cursor:
cursor.execute(query)
return cursor.fetchall()
finally:
connection.close()
和HTML(" trtdtable.html"):
<table id="customers">
<tr>
<th>ID</th>
<th>Last Name Name</th>
<th>First Name</th>
<th>Address</th>
<th>City</th>
</tr>
{% for row in tabledata %}
<tr>
<td>{{ row['PersonID'] }}</td>
<td>{{ row['LastName'] }}</td>
<td>{{ row['FirstName'] }}</td>
<td>{{ row['Address'] }}</td>
<td>{{ row['City'] }}</td>
</tr>
{% endfor %}
</table>
感谢您的帮助
答案 0 :(得分:1)
您在查询后关闭了连接。别这么做。
此外,永远不会捕获并吞下所有异常。如果你没有那个空白except
,那么Flask会告诉你错误是什么。