orm模型

主文件

from flask_sqlalchemy import SQLALchemy
from flask import Flask
app=Flask(__name__)
app.debug=True

app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///./db/test.db'##指定数据库路径,当前使用为sqlite数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=TRUE
app.config['SQLALCHEMY_ECHO']=TRUE ##将orm框架对数据库的操作转换为sql语言在控制台打印

db=SQLALCHEMY(app)  ##创建sqlalchemy对象并绑定在app上

orm常用声明的类型

db.String
db.Integer
db.Text
db.DateTime
db.Date
db.Time
db.Boolean
db.Float

orm常用选项

primary_key
unique
index
nullable
default

模型文件

from pfs import db  #从主文件导入db对象

class Department(db.Model): #声明部门类继承自db.Model类
    __tablename__='department'
    id=db.Column(db.Integer,primary_key=True) ##是否为主键
    name=db.Column(db.String(50),unique=True)  ##是否唯一


    def __init__(self,name):
        self.name=name


class Employee(db.Model):
    __tablename__='employee'

    id=db.Column(db.Integer,primary_key=True)
    name=db.Column(db.String(50))
    salary=db.Column(db.Integer)
    job=db.Column(db.String(50))
    department_id=db.Column(db.Integer,db.ForeignKey('department.id') ##部门id,外键引用部门表的id字段
    department=db.relationship('Department',backref=db.backref('employee',lazy='dynamic')) ##员工实例可以通过.department访问对应Department类中的属性,只有实例可以运用,类不可以运用



    def __init__(self,name,job,salary):
        self.name=name
        self.job=job
        self.salary=salary
<think>好的,用户想要了解ORM模型相关的API使用教程和文档,特别是结合FastAPI和Tortoise ORM的情况。首先,我需要整理Tortoise ORM的基础知识,比如模型定义、字段类型和CRUD操作。然后,结合FastAPI的整合步骤,比如如何配置数据库连接和创建路由。记得要引用提供的参考资料,尤其是引用[1]和引用[2]。用户可能需要具体的代码示例,比如定义模型、执行查询以及批量操作,比如bulk_create的使用。此外,生成相关问题时,要考虑用户可能关心的性能优化、事务处理、异步操作和迁移工具Aerich。需要确保回答结构清晰,分步骤讲解,并且提供文档链接方便用户进一步查阅。</think>### ORM 模型 API 使用教程与文档 #### 1. **Tortoise ORM 基础** Tortoise ORM 是 Python 的异步关系对象映射库,支持 PostgreSQL、MySQL 和 SQLite。以下是核心功能与用法: - **模型定义** 使用 `Model` 类定义数据表结构,例如: ```python from tortoise.models import Model from tortoise import fields class User(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=50) created_at = fields.DatetimeField(auto_now_add=True) ``` 字段类型包括 `IntField`、`CharField`、`JSONField` 等,支持索引和默认值[^2]。 - **CRUD 操作** - **创建**:`await User.create(name="Alice")` - **查询**:`await User.filter(name="Alice").first()` - **更新**:`await User.filter(id=1).update(name="Bob")` - **删除**:`await User.filter(id=1).delete()` #### 2. **FastAPI 整合实践** FastAPI 与 Tortoise ORM 结合可实现高性能异步 API: ```python from fastapi import FastAPI from tortoise.contrib.fastapi import register_tortoise app = FastAPI() # 配置数据库连接 register_tortoise( app, db_url="sqlite://db.sqlite3", modules={"models": ["models"]}, # 模型文件路径 generate_schemas=True, # 自动生成表结构 ) ``` #### 3. **批量操作 API** Tortoise ORM 提供高效的批量操作方法: ```python students = [ Student(name="Tom", age=20), Student(name="Lily", age=22) ] await Student.bulk_create(students) # 批量插入数据 ``` #### 4. **高级功能** - **事务处理**:使用 `in_transaction()` 包裹原子操作 - **关联查询**:通过 `ForeignKeyField` 定义外键关系 - **聚合函数**:如 `Count()`、`Sum()` #### 5. **文档与资源** - **官方文档**:[Tortoise ORM Documentation](https://tortoise-orm.readthedocs.io/) - **实战项目模板**:[fastapi-tortoise 项目地址](https://gitcode.com/gh_mirrors/fa/fastapi-tortoise)[^1] - **数据库迁移工具**:使用 Aerich 管理模型变更 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值