欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

sqlalchemy實(shí)現(xiàn)時(shí)間列自動(dòng)更新教程

 更新時(shí)間:2020年09月02日 15:55:25   作者:水痕01  
這篇文章主要介紹了sqlalchemy實(shí)現(xiàn)時(shí)間列自動(dòng)更新教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

一、使用場(chǎng)景需求

1、在實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中,用戶可以操作的數(shù)據(jù),我們往往會(huì)新增一個(gè)字段,來(lái)保存用戶最后一次修改時(shí)間

2、一些系統(tǒng)中,我們需要存儲(chǔ)用戶最后一次登錄時(shí)間,來(lái)統(tǒng)計(jì)用戶的活躍度

二、 在sqlalchemy中常規(guī)的做法

1、數(shù)據(jù)模型

import datetime
from uuid import uuid4
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy_demo.connect import Base
class UserModule(Base):
  """
  創(chuàng)建一個(gè)用戶的數(shù)據(jù)模型
  """
  __tablename__ = 'user'

  uuid = Column(String(36), unique=True, nullable=False, default=lambda: str(uuid4()), comment='uuid')
  id = Column(Integer, primary_key=True, autoincrement=True, comment='用戶id')
  user_name = Column(String(30), nullable=False, unique=True, comment='用戶名')
  password = Column(String(64), nullable=False, comment='用戶密碼')
  createtime = Column(DateTime, default=datetime.datetime.now, comment='創(chuàng)建時(shí)間')
  updatetime = Column(DateTime, default=datetime.datetime.now, comment='修改時(shí)間')
  is_lock = Column(Boolean, default=False, nullable=False, comment='是否鎖住用戶')

2、每次更新數(shù)據(jù)的時(shí)候,需要手動(dòng)插入時(shí)間字段,來(lái)確保updatetime這個(gè)時(shí)間字段才會(huì)更新

三、使用自動(dòng)更新數(shù)據(jù)

基于上面手動(dòng)插入時(shí)間字段,在開(kāi)發(fā)過(guò)程中很不方便,我們需要的是類似django中修改數(shù)據(jù),該列會(huì)自動(dòng)更新

1、導(dǎo)包

from uuid import uuid4
from sqlalchemy import Column, Integer, String, DateTime, Boolean, TIMESTAMP, func
from sqlalchemy.orm import relationship

from sqlalchemy_demo.connect import Base

2、定義數(shù)據(jù)模型

class UserModule(Base):
  """
  創(chuàng)建一個(gè)用戶的數(shù)據(jù)模型
  """
  __tablename__ = 'user'

  uuid = Column(String(36), unique=True, nullable=False, default=lambda: str(uuid4()), comment='uuid')
  id = Column(Integer, primary_key=True, autoincrement=True, comment='用戶id')
  user_name = Column(String(30), nullable=False, unique=True, comment='用戶名')
  password = Column(String(64), nullable=False, comment='用戶密碼')
  createtime = Column(DateTime, server_default=func.now(), comment='創(chuàng)建時(shí)間')
  # onupdate設(shè)置自動(dòng)更改
  updatetime = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment='修改時(shí)間')
  is_lock = Column(Boolean, default=False, nullable=False, comment='是否鎖住用戶')

3、接下來(lái)的創(chuàng)建表與增刪改查都一樣的。

補(bǔ)充知識(shí):Flask-SQLALchemy對(duì)表中數(shù)據(jù)按時(shí)間進(jìn)行統(tǒng)計(jì)

例如表的結(jié)構(gòu)如下:

class Status(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  submit_time = db.Column(db.DateTime, default=datetime.now())

其中,Status表接受用戶的提交,現(xiàn)在想對(duì)用戶的提交情況按時(shí)間進(jìn)行統(tǒng)計(jì)。例如過(guò)去24小時(shí),每小時(shí)的提交次數(shù);過(guò)去12個(gè)月,每個(gè)月的提交次數(shù)。

python代碼實(shí)現(xiàn)查詢?nèi)缦拢?/p>

from datetime import datetime, timedelta
 
NOW = datetime.utcnow()
last_24h_submits_count = []
for h in xrange(1,25):
  count = session.query(Status).filter(Status.submit_time.between(NOW - timedelta(seconds=h*3600-1), NOW - timedelta(hours=h-1))).count()
  last_24h_submits_count.append(count)

以上這篇sqlalchemy實(shí)現(xiàn)時(shí)間列自動(dòng)更新教程就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python字符串刪除指定字符的三個(gè)方法

    Python字符串刪除指定字符的三個(gè)方法

    這篇文章主要給大家介紹了關(guān)于Python字符串刪除指定字符的三個(gè)方法,我們?cè)谑褂?nbsp;Python處理字符串的時(shí)候,經(jīng)常會(huì)遇到一些字符串中出現(xiàn)了指定字符,需要的朋友可以參考下
    2023-07-07
  • Python中設(shè)置變量訪問(wèn)權(quán)限的方法

    Python中設(shè)置變量訪問(wèn)權(quán)限的方法

    這篇文章主要介紹了Python中設(shè)置變量訪問(wèn)權(quán)限的方法,是Python學(xué)習(xí)當(dāng)中的重要知識(shí)點(diǎn),需要的朋友可以參考下
    2015-04-04
  • Python爬蟲(chóng)實(shí)現(xiàn)Cookie模擬登錄

    Python爬蟲(chóng)實(shí)現(xiàn)Cookie模擬登錄

    這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)Cookie模擬登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python中os.path.join函數(shù)的用法示例詳解

    Python中os.path.join函數(shù)的用法示例詳解

    這篇文章主要給大家介紹了關(guān)于Python中os.path.join函數(shù)用法的相關(guān)資料,os.path.join函數(shù)是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)函數(shù),用于將多個(gè)路徑組合成一個(gè)有效的路徑,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Python實(shí)現(xiàn)在tkinter中使用matplotlib繪制圖形的方法示例

    Python實(shí)現(xiàn)在tkinter中使用matplotlib繪制圖形的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)在tkinter中使用matplotlib繪制圖形的方法,結(jié)合實(shí)例形式分析了Python使用tkinter與matplotlib進(jìn)行正弦曲線圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python3.7安裝keras和TensorFlow的教程圖解

    Python3.7安裝keras和TensorFlow的教程圖解

    這篇文章主要介紹了Python3.7安裝keras和TensorFlow經(jīng)驗(yàn),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • pygame實(shí)現(xiàn)非圖片按鈕效果

    pygame實(shí)現(xiàn)非圖片按鈕效果

    這篇文章主要介紹了pygame實(shí)現(xiàn)非圖片按鈕效果,不使用圖片制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python一行代碼可直接使用最全盤(pán)點(diǎn)

    Python一行代碼可直接使用最全盤(pán)點(diǎn)

    本文盤(pán)點(diǎn)一些Python中常用的一行(不限于一行)代碼,可直接用在日常編碼實(shí)踐中,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 基于Python爬取股票數(shù)據(jù)過(guò)程詳解

    基于Python爬取股票數(shù)據(jù)過(guò)程詳解

    這篇文章主要介紹了基于Python爬取股票數(shù)據(jù)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python目標(biāo)檢測(cè)實(shí)現(xiàn)黑花屏分類任務(wù)示例

    python目標(biāo)檢測(cè)實(shí)現(xiàn)黑花屏分類任務(wù)示例

    這篇文章主要為大家介紹了python目標(biāo)檢測(cè)實(shí)現(xiàn)黑花屏分類任務(wù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論