背景:
一个简单选库查询功能:
页面如下:
由于我查询的时候是顺序查询,即为一个个查询后插入到一个字典中在返回到页面,在服务端字典用了collections.OrderedDict处理了,直接服务端打印出来可以正常排序,但是到了页面就不正常排序了。
服务端部分代码:
if commandform.validate_on_submit():
session['cmdsql'] = commandform.command.data
session['serverID'] = request.form.getlist('dbcheckbox')
#判断是否选服
if session.get('serverID') == []:
flash(u'未选游戏服,请勾选游戏服!')
return redirect(url_for('ow.owsql'))
session['indexsql'] = {}
for db in session.get('serverID'):
dbsql = OwGame.query.filter_by(serverId=db).first()
dbhost = dbsql.serverHost
dbname = dbsql.serverName
session['dbname'] = dbname
session['sqlres'] = runSql(dbhost=dbhost,serverid=db,sql=session.get('cmdsql'))
session.get('indexsql')[db] = session.get('sqlres')
flash(u'查询数据库完成')
session['sqldic'] = collections.OrderedDict(sorted(session.get('indexsql').items(),key=lambda t:t[0]))
for k,v in session.get('sqldic').items():
print k,v
return redirect(url_for('ow.owsql'))
return render_template('ow/owsql.html',
commandform=commandform,
cmdsql = session.get('cmdsql'),
serverlists=serverlists,
dbname = session.get('dbname'),
sqldic = session.get('sqldic')
)
前端显示代码:
<div class="panel-body">
<h4 style="color: darkblue">执行的语句:{{ cmdsql }}</h4>
{% if sqldic %}
{% for key,value in sqldic.items() %}
<br><br>
<P style="color: red">查询 OW_{{ key }} 服的数据:</P>
{% if value %}
{% for sql in value %}
<p>**************** {{ loop.index }}. row *****************<br>
{% for i in sql %}
{{ i }}:{{ sql[i] }}</p>
{% endfor %}
{% endfor %}
{% else %}
<p>Empty set (0.00 sec).</p>
{% endif %}
{% endfor %}
{% endif %}
</div>
服务端执行查询的结果:
即为这段执行结果:
for k,v in session.get('sqldic').items():
print k,v
1 [{'propValue': '1452646877013', 'propKey': 'SERVER_OPEN_TIME'}]
2 [{'propValue': '1455759457445', 'propKey': 'SERVER_OPEN_TIME'}]
3 [{'propValue': '1456475863972', 'propKey': 'SERVER_OPEN_TIME'}]
4 [{'propValue': '1457161447282', 'propKey': 'SERVER_OPEN_TIME'}]
5 [{'propValue': '1457938848417', 'propKey': 'SERVER_OPEN_TIME'}]
6 [{'propValue': '1459333976715', 'propKey': 'SERVER_OPEN_TIME'}]
7 [{'propValue': '1460715839991', 'propKey': 'SERVER_OPEN_TIME'}]
8 [{'propValue': '1461139426796', 'propKey': 'SERVER_OPEN_TIME'}]
前端显示结果:
没有正常排序,这要怎么处理的?
上周改了,清缓存后还是有问题。
首先,字典是无序的集合,列表才是有序的,所以你的问题应该改成 python处理列表排序问题 。然而你查出来的数据每个列表只有一个元素,所以并没有顺序的问题。其实你的问题是查出来的每个列表之间的排序问题。这个看你的代码貌似看不出什么端倪