python+flask在前端页面对数据查询,但是无法显示在前端,请问怎么解决?

数据库操作:

import pymssql

class Mysql(object):
    def __init__(self):
        try:
            self.db = pymssql.connect(host='111111',
                                      port='11111',
                                      user='111',password='11111142',
                                      database='11111',
                                      charset='GB2312')
            self.cursor =self.db.cursor()
            print('连接成功')
        except:
            print('连接失败')

    def enshidata(self):
       # sqlenshi ="select top 10 r.STCD, sum(r.DRP) as DRP_SUM, b.STNM, b.STLC from RWDB.dbo.ST_PPTN_R r left join RWDB.dbo.ST_STBPRP_B b on r.STCD = b.STCD where r.TM >= DATEADD(hour,-1,GETDATE()) and b.ADMAUTH ='建始县' group by r.STCD, b.STNM, b.STLC order by sum(r.DRP) desc"
        sqlenshi ="select top 10 r.STCD,sum(r.DRP) as DRP_SUM ,b.STNM,b.STLC,b.ADMAUTH from RWDB.dbo.ST_PPTN_R r left join RWDB.dbo.ST_STBPRP_B b on r.STCD=b.STCD where r.TM >= DATEADD(hour,-1,GETDATE()) and b.ADMAUTH = '建始县' group by r.STCD,b.STNM,b.STLC,b.ADMAUTH order by sum(r.DRP) desc"
       # 执行语句
        self.cursor.execute(sqlenshi)
        # 获取所有记录
        resultses = self.cursor.fetchall()
        return resultses

在app.py中调用(flask路由):


@app.route('/esone/list',methods=['GET','POST'])
def esone_list():
    db =Mysql()
    resultsenshi = db.enshidata()
    #resultst = db.onedata()
    return render_template('esonelist.html',resultsEnshi=resultsenshi)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
          <h3 align="center" style="color: #ac2925">按县市划分</h3>
        <h4 align="center">恩施市1小时排序 ╰( ̄▽ ̄)╭</h4>
            <table border="1" width="50%" weight="30%" align="center">
                <thead>
                <tr>
                    <th style="text-align: center">序号</th>
                    <th style="text-align: center">站码</th>
                    <th style="text-align: center">1小时雨量</th>
                    <th style="text-align: center">测站名称</th>
                    <th style="text-align: center">站址</th>
                    <th style="text-align: center">县市</th>
                </tr>
                </thead>
                <tbody>
                    {% for resultses in resultsEnshi %}
                    <tr>
                        <td style="text-align: center">{{ loop.index }}</td>
                        <td style="text-align: center">{{ resultses[0] }}</td>
                        <td style="text-align: center">{{ resultses[1] }}</td>
                        <td style="text-align: center">{{ resultses[2] }}</td>
                        <td style="text-align: center">{{ resultses[3] }}</td>
                        <td style="text-align: center">{{ resultses[4] }}</td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
    </div>
</body>
</html>


img

同一程序中的其他SQL语句都能显示数据,SQL语句在数据库中测试也会返回数据

可能是SQL语句的查询结果为空,导致前端页面无法显示数据。你可以在数据库中手动执行SQL语句,查看查询结果是否为空。也可能是前端页面的HTML代码存在错误或者未正确引入所需的JavaScript库。你可以检查前端页面的HTML代码,或者确认是否正确引入了所需的JavaScript库

参考GPT和自己的思路,您可以检查以下几个方面,以确定问题的来源:

检查您的 Flask 代码是否正确地将查询结果传递给前端页面。

确保您的前端页面使用正确的变量来显示查询结果。您可以使用浏览器的开发者工具来检查页面元素是否正确地渲染。

确保您的查询语句没有错误,并且确实返回了数据。您可以在 Python 中运行该查询,以检查是否返回了正确的结果。

以下是一个简单的 Flask 视图函数,可以将查询结果传递给前端页面:

from flask import Flask, render_template
import pyodbc

app = Flask(__name__)

@app.route('/')
def index():
    conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=your_database_name;UID=your_username;PWD=your_password')
    cursor = conn.cursor()
    sqlenshi ="select top 10 r.STCD,sum(r.DRP) as DRP_SUM ,b.STNM,b.STLC,b.ADMAUTH from RWDB.dbo.ST_PPTN_R r left join RWDB.dbo.ST_STBPRP_B b on r.STCD=b.STCD where r.TM >= DATEADD(hour,-1,GETDATE()) and b.ADMAUTH = '建始县' group by r.STCD,b.STNM,b.STLC,b.ADMAUTH order by sum(r.DRP) desc"
    cursor.execute(sqlenshi)
    result = cursor.fetchall()
    conn.close()
    return render_template('index.html', result=result)

在上述代码中,使用了 Pyodbc 模块来连接 SQL Server 数据库,并运行了查询语句。查询结果存储在 result 变量中,并作为参数传递给 render_template 函数。render_template 函数使用 Flask 模板引擎将 index.html 页面渲染为 HTML 页面。

在您的 HTML 页面中,可以使用 Jinja2 模板语言来显示查询结果。例如:

<table>
  <tr>
    <th>STCD</th>
    <th>DRP_SUM</th>
    <th>STNM</th>
    <th>STLC</th>
    <th>ADMAUTH</th>
  </tr>
  {% for row in result %}
  <tr>
    <td>{{ row[0] }}</td>
    <td>{{ row[1] }}</td>
    <td>{{ row[2] }}</td>
    <td>{{ row[3] }}</td>
    <td>{{ row[4] }}</td>
  </tr>
  {% endfor %}
</table>

在上述代码中,使用了 Jinja2 的 for 循环语句来遍历查询结果,并将每个结果行的字段显示为 HTML 表格的行和列。
如果对您有帮助,请给与采纳,谢谢。

我建议你先在app.py文件中print()出你选择的数据,如果能在终端输出数据说明是前端的问题,若不能输出,则说明是数据库的查询语言问题,你先试一试,确定好问题所在后把各个阶段的代码文本发过来,我复制调试一下

提供参考实例:https://blog.csdn.net/enemy_sprites/article/details/105452352

从代码中看,你的数据库查询和 Flask 路由都没有问题,所以可能是前端页面的问题导致数据无法显示。你可以检查一下以下几个方面:

检查前端页面中的模板语法是否正确,如变量名是否与 Flask 路由中的变量名相匹配,语法是否有误等。

检查前端页面中的 CSS 样式是否影响了表格的显示,如表格字体颜色与背景色是否匹配,是否设置了 display: none; 等影响表格显示的属性。

检查前端页面中的 JavaScript 是否影响了表格的显示,如是否对表格进行了隐藏、过滤等操作,是否有语法错误等。

检查浏览器的开发者工具,查看是否有报错信息或警告信息,以及是否有网络请求失败的情况。

https://www.baidu.com/link?url=lkf4htu3myoB1aaEjV5_lvgYzD3KM3l6DFjsxeT2QLJigIVFvnU0SCyYeWSDYgK1At82pGt8hU2oBfWvUAn0yjEzyFxNKDuK6NQZXfjE7Rq&wd=&eqid=f3f6c73500004b6c0000000263f76894

sqlenshi ="select top 10 r.STCD,sum(r.DRP) as DRP_SUM ,b.STNM,b.STLC,b.ADMAUTH from RWDB.dbo.ST_PPTN_R r left join RWDB.dbo.ST_STBPRP_B b on r.STCD=b.STCD where r.TM >= DATEADD(hour,-1,GETDATE()) and b.ADMAUTH = '建始县' group by r.STCD,b.STNM,b.STLC,b.ADMAUTH order by sum(r.DRP) desc"

这个sql 写的有问题啊
改为:
sqlenshi ="select r.STCD,sum(r.DRP) as DRP_SUM ,b.STNM,b.STLC,b.ADMAUTH from RWDB.dbo.ST_PPTN_R r left join RWDB.dbo.ST_STBPRP_B b on r.STCD=b.STCD where r.TM >= DATEADD(hour,-1,GETDATE()) and b.ADMAUTH = '建始县' group by r.STCD,b.STNM,b.STLC,b.ADMAUTH order by sum(r.DRP) desc limit 10"
试一下啊

print(resultses)

输出查询结果试试,肯定是sql有问题,很简单的一个代码

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^