首页 > 数据库 >tortoise_sqllite_crud

tortoise_sqllite_crud

时间:2023-02-11 08:11:24浏览次数:45  
标签:__ tortoise fields await crud UserModel True sqllite

sqlite tortoise crud

from enum import IntEnum

from tortoise import connections, fields, models
from tortoise.expressions import F, Q, RawSQL, Subquery
from tortoise.functions import Avg, Sum


class AbstractModel(models.Model):
    # 主键,当表里所有属性都没设置pk时,默认生成一个IntField类型 id 的主键
    id = fields.UUIDField(pk=True)

    class Meta:
        # 抽象模型,不生成表
        abstract = True


class MixinTimeFiled:
    # 添加数据时间 null = True tianjia gengxing buyong fuzhi
    created = fields.DatetimeField(null=True, auto_now_add=True)
    # 修改数据时间
    modified = fields.DatetimeField(null=True, auto_now=True)


class Gender(IntEnum):
    MAN = 0
    WOMAN = 1


class UserModel(AbstractModel, MixinTimeFiled):
    # unique 是否唯一 max—length 数据长度 index 是否索引
    username = fields.CharField(
        max_length=20, description="描述", unique=True, index=True
    )
    # null 是否可以为空
    nickname = fields.CharField(
        max_length=30, description="nickname", null=True, default="777"
    )
    # description 字段备注 ddl展示, 此处入库的为 0 or 1
    gender = fields.IntEnumField(Gender, description="sex", default=Gender.WOMAN)
    # max——digits 小输点左边最大位数,decimal——places 小数点右边最大位数99.99
    balance = fields.DecimalField(max_digits=2, decimal_places=2, description="balance")
    is_admin = fields.BooleanField(default=False)
    job_info = fields.JSONField(default=dict)  # {}

    class Meta:
        # 自定义表名,不配置按照类名小写生成 usermodel
        table = "tableName"
        table_description = "set table ddl desc"

        # 多列设置唯一复合所有
        # unique_together = (("gender", "balance"),)
        # 排序
        ordering = ("is_admin",)
        # 索引
        indexes = ("balance",)

    def __str__(self):
        return self.username


async def cud():
    """增删改"""

    # 新增 返回 一个 UserModel null default  ziduan weiyi
    # await UserModel.create(username="888", balance=22.135)

    # 更新 - 返回改动行数 filter tiaojian k
    await UserModel.filter(username="888").update(gender=Gender.MAN)  # 0
    # await UserModel.filter(username="888").update(gender=0)

    # 删除 - 返回改动行数
    # await UserModel.filter(username="888").delete()

    # 批量创建 - [UserModel,]
    # await UserModel.bulk_create(
    #     [UserModel(username=f"{i}", balance=i) for i in range(2)]
    # )

    # 批量更新
    # users = await UserModel.all()
    # for user in users:
    #     user.gender = 0

    # await UserModel.bulk_update(users, fields=["gender"])


async def init():
    # Here we create a SQLite DB using file "db.sqlite3"
    #  also specify the app name of "models"
    #  which contain models from "app.models"
    await Tortoise.init(
        # 数据库连接
        db_url="sqlite://basic.sqlite3",
        # 连接mysql pip install aiomysql
        # db_url='mysql://root:[email protected]:3306/tortoise',
        # 指定管理的models,__main__ ️当前文件的models.Model
        modules={"models": ["__main__"]},
    )
    # Generate the schema
    await Tortoise.generate_schemas()
    await cud()


if __name__ == "__main__":
    from tortoise import Tortoise, run_async

    from logger import logger_db_client

    run_async(init())

标签:__,tortoise,fields,await,crud,UserModel,True,sqllite
From: https://www.cnblogs.com/zhuoss/p/17110833.html

相关文章

  • tortoise_fastapi_sqlite
    tortoise-orm在fastapi中的使用"""TortoiseORM"""fromtortoise.contrib.fastapiimportregister_tortoisefromtortoise.contrib.pydanticimportpydantic_mo......
  • JQuery_DOM操作_属性操作_CRUD操作
    CRUD操作:1.append():父元素将子元素追加到末尾*对象1.append(对象2):将对象2添加到对象1元素内部,并且在末尾2.prepend():父元素将子元素追加到开头......
  • vue3实现单页crud
    1.介绍主要实现单页curd,包含分页、新增、修改、删除、批量删除、条件搜索、表单校验。导入和导出暂未实现。、本文章只是学习过程。仅供参考。2.代码,按需复制修改即可......
  • 使用Spring的JdbcTemplate进行CRUD
    packagecom.mo;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.List;importjavax.annotation.Resource;importorg.junit.Test;importorg.ju......
  • CRUD-U,购买帖子内容插件-三次开发
     to  解决方案: ......
  • DOM属性操作中CRUD操作
    CRUD操作1.append():父元素将子元素追加到末尾对象1.append(对象2):将对象2添加到对象1元素内部,并且在末尾2.prepend():父元素将子元素追加到开头对象1.appen......
  • TortoiseSVN v1.7
     X32位:​​​http://nchc.dl.sourceforge.net/project/tortoisesvn/1.7.0/Application/TortoiseSVN-1.7.0.22068-win32-svn-1.7.0.msi​​X64:​​......
  • MySQL基础:通过SQL对数据库进行CRUD
    MySQL基础今日目标:能通过SQL对数据库进行CRUD文章目录MySQL基础一、MySQL数据模型二、SQL概述2.1SQL简介2.2通用语法2.3SQL分类三、DDL:操作数据库3.1查询3.2创建数据......
  • QT sqllite操作
    //添加sql模块      //打开数据库MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);......
  • MongoDB cmd CRUD操作 对照SQL
    问题​​参考官方文档​​使用MogoDB你就要熟悉他的常用cmd命令,增删改查,聚合多表查询等基本操作,本片博客旨在教会大家快速上手MogoDB,对其有基本了解,会对照Oracle的SQL查询......