I am trying to write a small app that gets visitor IP and stores in Riak database. On its /show route it should list all visitors, that is, stored IP's and associated dates. However, for some reason, I am either storing only last visitor, or fetching only last one. What am I doing wrong here? Im sure its not only wrong code issue, but also wrong way - I am trying to switch from die-hard sql user and I cant wrap my head about not having 'select * from ...' available ;)
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')