Tortoise ORM:1.模型创建
ORM
对象关系映射(英语:Object Relational Mapping),表 -> 类; 列 -> 属性
Tortoise ORM
Tortoise ORM - Tortoise ORM v0.19.3 Documentation[1] Tortoise ORM 是一个受 Django 启发的易于使用的异步 ORM (对象关系映射器)。
安装
pip install tortoise-orm -i https://pypi.douban.com/simple/
- 此篇文章参考:
https://tortoise.github.io/models.html
https://tortoise.github.io/fields.html
案列
表定义
from enum import IntEnum
from tortoise import models
from tortoise import fieldsclass AbstractModel(models.Model):# 主键,当表里所有属性都没设置pk时,默认生成一个IntField类型 id 的主键id = fields.UUIDField(pk=True)class Meta:# 抽象模型,不生成表abstract = Trueclass MixinTimeFiled:# 添加数据时间created = fields.DatetimeField(null=True, auto_now_add=True)# 修改数据时间modified = fields.DatetimeField(null=True, auto_now=True)class Gender(IntEnum):MAN = 0WOMAN = 1class 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 1gender = fields.IntEnumField(Gender, description='sex', default=Gender.WOMAN)# max——digits 小输点左边最大位数,decimal——places 小数点右边最大位数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:# 自定义表名,不配置按照类名小写生成table = "tableName"table_description = "set table ddl desc"# 多列设置唯一复合所有unique_together = (('gender', 'balance'),)# 排序ordering = ('is_admin',)# 索引indexes = ('balance',)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://db.sqlite3',# 连接mysql pip install aiomysql# db_url='mysql://root:123456@127.0.0.1:3306/tortoise',# 指定管理的models,__main__ 🈯️当前文件的models.Modelmodules={'models': ['__main__']})# Generate the schemaawait Tortoise.generate_schemas()if __name__ == '__main__':from tortoise import Tortoise, run_asyncrun_async(init())
- 生成的表