国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

peewee爬坑

ashe / 3118人閱讀

摘要:代碼示例用戶基本信息用戶名在視圖函數(shù)更新數(shù)據(jù)更新只有調用字段的值才會在改變項目使用的,使用了語法數(shù)據(jù)庫遷移管理,文檔,文檔

peewee update_time字段爬坑

SQLalchemy中BaseModel定義:

# -*- coding:utf-8 -*-
from datetime import datetime
from sqlalchemy import Column, DateTime
class BaseModel(object):
    """模型基類,為每個模型補充創(chuàng)建時間與更新時間"""

    create_time = Column(DateTime, default=datetime.now)  # 記錄的創(chuàng)建時間
    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now)  # 記錄的更新時間

peewee中的BaseModel定義:

# -*- coding: utf-8 -*-
from datetime import datetime
from peewee import Model, CharField
import peewee_async  # peewee_async異步操作MySQL
from configs import config

# 數(shù)據(jù)庫連接池
db = peewee_async.PooledMySQLDatabase(
    config.get("mysql_db"), host=config.get("mysql_host"), port=config.get("mysql_port"),
    user=config.get("user"), password=config.get("pwd"),
    min_connections=10,
    max_connections=50

)


class BaseModel(Model):
    """模型基類,為每個模型補充創(chuàng)建時間與更新時間"""
    create_time = DateTimeField(default=datetime.now, verbose_name="創(chuàng)建時間")  # 記錄的創(chuàng)建時間
    update_time = DateTimeField(default=datetime.now, verbose_name="更新時間")  # 記錄的更新時間

    def save(self, *args, **kwargs):
        """覆寫save方法, update_time字段自動更新, 實例對象需要在update成功之后調用save()"""
        if self._get_pk_value() is None:
            # this is a create operation, set the date_created field
            self.create_time = datetime.now().strftime(
                "%Y-%m-%d %H:%M:%S")
        self.update_time = datetime.now().strftime(
            "%Y-%m-%d %H:%M:%S")
        return super(BaseModel, self).save(*args, **kwargs)

很明顯sqlalchemy定義的update_time字段的onupdate=datetime.now會在模型類的實例對象更新的時候自動更新該字段的值;而peewee的update_time字段并沒有onupdate這個選項,從而無法實現(xiàn)自動的更新時間,故而在BaseModel中覆寫了save方法,其他模型類繼承BaseModel,那么子類的實例對象在update成功之后調用對象的save方法可以達到更新update_time字段值的目的。
代碼示例:

class User(BaseModel):
    """用戶"""

    # 1 基本信息
    user_name= CharField(max_length=16, unique=True, null=False, verbose_name="用戶名")
    
    class Meta:
        database = db
        db_table = "user"

在視圖函數(shù)更新數(shù)據(jù):

# 更新
try:
    async with db.atomic_async():
        user.user_name= new_user_name
        await self.application.manager.update(user, only=["user_name"])
except Exception as err:
    self.application.logger.error(err)
    db.rollback()
else:
    # update_time
    user.save()  # 只有調用save() update_time字段的值才會在MySQL改變

NOTE:項目使用的tornado5.1,使用了async+await語法;數(shù)據(jù)庫遷移管理peewee-migrate,peewee文檔:http://docs.peewee-orm.com/en..., peewee-async文檔:https://peewee-async.readthed...

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19385.html

相關文章

  • peewee爬坑

    摘要:代碼示例用戶基本信息用戶名在視圖函數(shù)更新數(shù)據(jù)更新只有調用字段的值才會在改變項目使用的,使用了語法數(shù)據(jù)庫遷移管理,文檔,文檔 peewee update_time字段爬坑 SQLalchemy中BaseModel定義: # -*- coding:utf-8 -*- from datetime import datetime from sqlalchemy import Column, D...

    Java3y 評論0 收藏0
  • peewee爬坑

    摘要:代碼示例用戶基本信息用戶名在視圖函數(shù)更新數(shù)據(jù)更新只有調用字段的值才會在改變項目使用的,使用了語法數(shù)據(jù)庫遷移管理,文檔,文檔 peewee update_time字段爬坑 SQLalchemy中BaseModel定義: # -*- coding:utf-8 -*- from datetime import datetime from sqlalchemy import Column, D...

    jimhs 評論0 收藏0
  • ORM-像對象一樣對待數(shù)據(jù)

    摘要:顧名思義,就是將關系型數(shù)據(jù)庫與中的對象關聯(lián)起來,提供了一種操作數(shù)據(jù)的簡便方式,相當于對數(shù)據(jù)庫加了一層更友好的接口。新增數(shù)據(jù)對象方法方法直接創(chuàng)建數(shù)據(jù)對象,需要調用方法保存到數(shù)據(jù)庫中。 咱們編程教室有不少同學,學完了基礎課程,掌握了一定的編程能力,開始做項目了。然后很可能遇到一個問題:管理數(shù)據(jù)。課程里有講過用文件保存數(shù)據(jù),還有 pickle 、 csv 等模塊輔助。但對于稍微復雜一點的數(shù)據(jù)...

    U2FsdGVkX1x 評論0 收藏0
  • 使用 Python 的 SQLite JSON1 和 FTS5 擴展

    摘要:每個對象包括一個標題,一個和頂層的元數(shù)據(jù)鍵,下面是提取作品標題的代碼對應下面創(chuàng)建的查詢在接下來的例子中,將提取包含特定標簽的條目。對于擴展,該可選字典提供了附加元數(shù)據(jù)進行標記字段,以及通過前綴的長度存儲快速前綴查詢。 早在九月份,編程界出現(xiàn)一個名為 json1.c 的文件,此前這個文件一直在 SQLite 的庫里面。還有,筆者也曾總結通過使用新的 json1 擴展來編譯 pysqli...

    Lorry_Lu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<