2016-06-25 18 views
0

訪問統計を持つ小さなhello world Flaskがあります。私はredisで訪問数をカウントすることができましたが、MySQLデータベースに訪問日数と訪問数を格納するサポートを追加する必要があります。現在のコードは です。以前に作成したデータベースにアクセスしようとしていました。 現在、私はそのような情報をMySQLにどのように格納するのか考えていません。Python、Flask - countページの訪問とデータベースへの書き込み

以前に作成したデータベースにアクセスしようとしていました。 現在、私はそのような情報をMySQLにどのように格納するのか考えていません。

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) 

これはどのように解決できますか?私はどんな提案にも感謝します。

+0

あなたはMySQLで何をtreidすることができますか? – syntonym

+0

コードを表示し、それがあなたが望むことをしなかった方法を説明してください。 – syntonym

+0

オリジナルの投稿のコードを更新しました。残念ながら私はdbで訪問統計を収集して保存する方法はまだ分かりません。 –

答えて

0

フラスコSQLAlchemyのをチェックアウト: http://flask-sqlalchemy.pocoo.org/2.1/quickstart/#a-minimal-application

あなたが、私はそれがまだされていない場合、カウンタを作成するには、チェックを入れますが、PROB

from yourapplication import db 
db.create_all() 

でデータベースを作成する必要があります不要なステップ。

ここにはSQLite3で動作するアプリケーションがあります。 MySQLが本当に必要な場合は、ここに示すようにSQLALCHEMY_DATABASE_URIを変更することができます。 Switching from SQLite to MySQL with Flask SQLAlchemy しかし、私の謙虚な意見では、この使い方は過度のものです。

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

これは、ページがリファインされるたびに増加するか、またはユーザーが同じドメインの別のページからこのインデックスページを訪問します。 –

関連する問題