#models.py
#每日日期可以使用db.Date類型
#user_id和local_date使用了組合約束,只有當(dāng)兩個(gè)字段都相同時(shí),才沖突
class StatDay(db.Model):
__tablename__ = 'statistics_days'
id = db.Column(db.Integer,primary_key=True)
user_id = db.Column(db.Integer, index=True)
clicks_count = db.Column(db.Integer,default=0)
local_date = db.Column(db.Date, unique=True,index=True)
#組合約束unique
__table_args__ = (db.UniqueConstraint('user_id', 'local_date', name='_user_id_local_date'),
)
#views.py
from datetime import datetime
@jump.route("/<key>")
def go_link(key):
#統(tǒng)計(jì)當(dāng)日點(diǎn)擊
#生成今日日期
local = datetime.now()
today = datetime.date(local)
#查詢是否已經(jīng)添加今日記錄
stat_day = StatDay.query.filter_by(user_id=current_user.id,local_date=today).first()
if stat_day is None:#不存在則添加
stat_day = StatDay(user_id=current_user.id,
local_date=today,clicks_count=1)
else:#存在則+1
stat_day.clicks_count += 1
db.session.add(stat_day)
插入今日統(tǒng)計(jì)的行后,local_date這個(gè)字段通過shell查詢出來時(shí)這樣的:
>>> s=StatDay.query.first()
>>> s.local_date
datetime.date(2016, 10, 5)