首页 > 数据库 >fastapi-----SQLAlchemy对数据的增删改查操作(不使用crud+schemas)

fastapi-----SQLAlchemy对数据的增删改查操作(不使用crud+schemas)

时间:2023-10-07 16:55:06浏览次数:36  
标签:__ SQLAlchemy name person fastapi crud Person session data

 

from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

HOSTNAME = '127.0.0.1'
PORT = "3306"
USERNAME = "root"
PASSWORD = "123456"
DATABASE = "xt_fastapi"
DB_URI = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)

engine = create_engine(DB_URI)

Base = declarative_base(engine)

# Session = sessionmaker(engine)
# session = Session()
# 上面两行等价于下面一行
session = sessionmaker(engine)()

class Person(Base):
    __tablename__ = "person"
    id = Column(Integer,primary_key=True,autoincrement=True)
    # String(50)==>varchar(50)
    name = Column(String(50))
    age = Column(Integer)
    country = Column(String(50))

    # 返回字符串
    def __str__(self):
        return "<Person(name:%s,age:%s,country:%s)>" % (self.name,self.age,self.country)

# session会话

# 增
def add_data():
    p = Person(name="angle", age=16, country="china")
    p1 = Person(name="angle1",age=16,country="china")
    p2 = Person(name='angle2',age=20,country='china')
    session.add_all([p1,p2])
    # session.add(p)
    session.commit()

# 查
def serach_data():
    # # 指定表,all()方法返回所有数据
    # all_person = session.query(Person).all()
    # # print(all_person)
    # for p in all_person:
    #     print(p)

    # 指定筛选
    # all_person = session.query(Person).filter_by(name='angle1').all()
    # for p in all_person:
    #     print(p)

    # # filter(条件)
    # all_person = session.query(Person).filter(Person.name.contains('angle'))
    # for p in all_person:
    #     print(p)

    # # 获取id为1的数据
    # person = session.query(Person).get(1)
    # print(person)

    #使用first方法获取结果集中的第一条数据
    person = session.query(Person).first()
    print(person)

# 改
def update_data():
    person = session.query(Person).first()
    person.name = 'angle_update'
    session.commit()

# 删
def delete_data():
    person = session.query(Person).first()
    session.delete(person)
    session.commit()

if __name__ == "__main__":
    # Base.metadata.create_all()
    # add_data()
    # serach_data()
    # update_data()
    delete_data()

 

标签:__,SQLAlchemy,name,person,fastapi,crud,Person,session,data
From: https://www.cnblogs.com/edeny/p/17746721.html

相关文章

  • FastAPI
    FastAPI1.FastAPI简介1.介绍 FastAPI是一个用于构建API快速(高性能)的web框架使用Python3.6+并基于标准的Python类型提示开发快捷性能和NodeJSGO相当并集成SwaggerUI 2.特征 快速:可与NodeJS和Go并肩的极高性能(归功于Starlette和Pydantic)最快的......
  • Fastapi 框架知识点总结
    【一】引入为什么Fastapi火【二】Starlette,Pydantic与FastAPI框架是什么关系?Starlette介绍Pydantic介绍三者之间的联系【三】Pydantic使用方法介绍类模型的定义及使用递归模型ORM操作【四】Fastapi环境搭建及初步使用Fastapi环境搭建注意不同版本的包......
  • 【2.0】Starlette,Pydantic 与 FastAPI 框架是什么关系?
    【一】介绍Starlette是个什么项目;IDE开发时Python3.5+版本的"typehints"的好处:简短、直观和标准的Python类型声明;介绍Pydantic包,FastAPI项目的开发为什么要使用Pydantic【二】Starlette【1】介绍Starlette是一种轻量级的ASGI框架/工具包,是构建高性能......
  • 【5.0】Fastapi路径参数和数据的解析验证
    【一】小项目构建【1】文档结构树projects├─coronavirus├─__init__.py ├─....py├─turtorial ├─__init__.py ├─chapter03.py ├......
  • 【4.0】Fastapi简单使用
    【一】Fastapi引入【1】构建基础的fastapi项目fromfastapiimportFastAPIfromtypingimportOptionalfrompydanticimportBaseModel#创建fastapi对象app=FastAPI()#定义模型表classCityInfo(BaseModel):#省份province:str#城市coun......
  • 【3.0】Fastapi环境搭建及初步使用
    【一】环境准备【1】第三方包requirements.txtaiofiles==0.6.0atomicwrites==1.4.0attrs==20.3.0bcrypt==3.2.0certifi==2020.12.5cffi==1.14.4chardet==4.0.0click==7.1.2colorama==0.4.4cryptography==3.3.1dnspython==2.0.0ecdsa==0.14.1email-validator==1.1......
  • 【9.0】Fastapi表单数据处理
    【一】表单参数【1】定义视图fromfastapiimportAPIRouter,status,FormfrompydanticimportBaseModel,EmailStrfromtypingimportOptional,Union,Listapp04=APIRouter()###表单数据处理@app04.post("/login/")asyncdeflogin(#username用户名......
  • 【8.0】Fastapi响应模型
    【一】自定义响应模型【1】定义视图函数fromfastapiimportAPIRouterfrompydanticimportBaseModel,EmailStrfromtypingimportOptionalapp04=APIRouter()###响应模型#定义基本类classUserBase(BaseModel):#定义字段username:用户名类型为str:......
  • 【6.0】Fastapi请求体参数及混合参数
    【一】说明项目接上小结【二】请求体和字段fromfastapiimportAPIRouter,Path,QueryfrompydanticimportBaseModel,Fieldapp03=APIRouter()##请求体字段classCityInfo(BaseModel):#给name字段添加注解#...:表示必填字段#example:表示......
  • 【13.0】Fastapi中的Jinja2模板渲染前端页面
    【一】创建Jinja2引擎#必须模块fromfastapiimportRequest#必须模块fromfastapi.templatingimportJinja2Templates#创建子路由application=APIRouter()#创建前端页面配置templates=Jinja2Templates(directory='./coronavirus/templates')#初始化数据库......