我正在尝试编写一个获取访问者 IP 并存储在 Riak 数据库中的小应用程序。在其 /show 路由上,它应该列出所有访问者,即存储的 IP 和相关日期。但是,出于某种原因,我要么只存储最后一个访问者,要么只获取最后一个访问者。我在这里做错了什么?我确定它不仅是错误的代码问题,而且是错误的方式 - 我正在尝试从顽固的 sql 用户切换,但我无法理解没有'select * from ...' 可用;)
import riak
import json
from flask import Flask, request, render_template
from datetime import datetime
app = Flask(__name__)
riak = riak.RiakClient(host='some.domain', port=8087, transport_class=riak.RiakPbcTransport)
def date(obj):
return obj.isoformat() if hasattr(obj, 'isoformat') else obj
@app.route('/')
@app.route('/index')
def index():
db = riak.bucket('visitor')
ip = request.remote_addr
time = json.dumps(datetime.now(), default=date)
new_visitor = db.new('log', data={
'ip': ip,
'time': time,
})
new_visitor.store()
return ip
@app.route('/show')
def show():
db = riak.bucket('visitor')
visitors = db.get('log')
return render_template("show.html", visitors=visitors.get_data())
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')