数据库操作:
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>
同一程序中的其他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 是否影响了表格的显示,如是否对表格进行了隐藏、过滤等操作,是否有语法错误等。
检查浏览器的开发者工具,查看是否有报错信息或警告信息,以及是否有网络请求失败的情况。
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有问题,很简单的一个代码
不知道你这个问题是否已经解决, 如果还没有解决的话: