2016-06-25 6 views
0

Es gibt eine kleine Hallo Welt Flask mit Besuch Statistiken. Es ist mir gelungen, Besuche mit redis zu zählen, aber ich muss auch Unterstützung hinzufügen, um Datum und Anzahl der Besuche in der MySQL-Datenbank zu speichern. Der aktuelle Code lautet: Ich habe versucht, auf die zuvor erstellte Datenbank zuzugreifen. Derzeit habe ich keine Ahnung, wie man solche Informationen in MySQL speichert.Python, Flask - zählen Seite besuchen und in die Datenbank schreiben

Ich versuchte, auf zuvor erstellte Datenbank zuzugreifen. Derzeit habe ich keine Ahnung, wie man solche Informationen in MySQL speichert.

from flask import Flask 
from redis import Redis 

app = Flask(__name__) 
redis = Redis(host="redis") 
mysql = MySQL() 
app.config['MYSQL_DATABASE_USER'] = 'user' 
app.config['MYSQL_DATABASE_PASSWORD'] = 'passwd' 
app.config['MYSQL_DATABASE_DB'] = 'hello' 
app.config['MYSQL_DATABASE_HOST'] = 'mysql' 
mysql.init_app(app) 

@app.route("/") 
def hello(): 
    visits = redis.incr('counter') 
    html = "<h3>Hello, world!</h3>" \ 
      "<b>Visits:</b> {visits}" \ 
      "<br/>" 
    return html.format(visits=visits) 

if __name__ == "__main__": 
    app.run(host="0.0.0.0", port=80) 

Wie kann das gelöst werden? Ich werde für irgendwelche Vorschläge dankbar sein.

+0

Können Sie zeigen, was Sie mit MySQL getan haben? – syntonym

+0

Zeigen Sie den Code und erklären Sie, wie er nicht das gemacht hat, was Sie wollten. – syntonym

+0

Aktualisierter Code im ursprünglichen Post. Leider weiß ich noch nicht, wie man Besuchsstatistiken in db sammelt und speichert. –

Antwort

0

Check out Flask-SQLAlchemy: http://flask-sqlalchemy.pocoo.org/2.1/quickstart/#a-minimal-application

Sie müssen die Datenbank mit

from yourapplication import db 
db.create_all() 

ich einen Scheck setzen erstellen, den Zähler zu erstellen, wenn es noch nicht gewesen ist, aber prob ein unnötiger Schritt.

Hier ist eine funktionierende App mit SQLite3. Wenn Sie wirklich MySQL brauchen, können Sie SQLALCHEMY_DATABASE_URI wie hier gezeigt ändern: Switching from SQLite to MySQL with Flask SQLAlchemy Aber es ist, meiner bescheidenen Meinung nach, viel zu viel für diesen Einsatz.

from flask import Flask, jsonify 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' 
db = SQLAlchemy(app) 


class Visit(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    count = db.Column(db.Integer) 

    def __init__(self): 
     self.count = 0 

@app.route("/") 
def hello(): 
    v = Visit.query.first() 
    if not v: 
     v = Visit() 
     v.count += 1 
     db.session.add(v) 
    v.count +=1 
    db.session.commit() 
    return jsonify(counter=v.count) 

if __name__ == "__main__": 
    app.run(debug=True) 
+0

Dies wird jedes Mal inkrementiert, wenn die Seite referenziert wird oder der Benutzer diese Indexseite von der gleichen Seite der Domäne aus aufruft. –

Verwandte Themen