当前位置: 首页 > news >正文

python的web接口数据库链接封装

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pymysql import connect, cursors
from pymysql.cursors import DictCursor
app = FastAPI()# 设置允许的源列表
origins = ["http://localhost","http://localhost:8081","http://localhost:3000","https://your-production-domain.com"
]# 添加中间件
app.add_middleware(CORSMiddleware,allow_origins=origins,  # 也可以设置为 ["*"] 允许所有源allow_credentials=True,allow_methods=["*"],  # 允许所有方法allow_headers=["*"],  # 允许所有头
)
class Database:def __init__(self):self.config = {'host': 'localhost','user': 'root','password': 'admin','database': 'demo','cursorclass': cursors.DictCursor}self.connection = Nonedef __enter__(self):"""进入上下文时创建连接"""self.connection = connect(**self.config)return self.connection.cursor()def __exit__(self, exc_type, exc_val, exc_tb):"""退出上下文时处理连接"""if self.connection:if exc_type is None:self.connection.commit()else:self.connection.rollback()self.connection.close()self.connection = None@app.get('/')
def main():return {"hello": "wo1rld"}@app.get('/demo')
def demo():with Database() as cursor:cursor.execute("SELECT * from user limit 2")data = cursor.fetchall()return list(data)@app.get('/test/a={a}/b={b}')
def test(a: str=None, b: str=None):with Database() as cursor:cursor.execute(f"SELECT * from user where id={a}")data1 = cursor.fetchall()return list(data1)if __name__ == '__main__':import uvicornuvicorn.run(app=app,host="0.0.0.0",port=8080,workers=1)

访问地址:127.0.0.1:8080/test/a=1/b=4

或者​​​​​127.0.0.1:8080/demo

http://www.dtcms.com/a/319317.html

相关文章:

  • Linux---第三天---权限
  • 并发测试:你的应用扛得住“早高峰”吗?
  • python中的集合
  • uniapp vue3中使用pinia 和 pinia持久化(没有使用ts)
  • PPT漏斗图,让数据更美观!
  • 线程池创建线程
  • Mac 电脑安装 ADB 环境完整指南
  • 流程图使用规范
  • Git Status 命令深度指南:洞悉仓库状态的核心艺术
  • 专题二_滑动窗口_长度最小的子数组
  • 进程Linux
  • 打靶日记-PHPinclude-labs(一)
  • 攻防世界WEB(新手模式)2-2-upload1
  • MySQL中的DDL(一)
  • 深入理解动态规划算法
  • 数字孪生系统让汽车工厂虚实联动预测维护少停机
  • LabVIEW注册表操作
  • 图像认知与OpenCV——图像预处理4
  • python opencv 调用 海康威视工业相机(又全又细又简洁)
  • Java开发时出现的问题---架构与工程实践缺陷
  • KUKA库卡焊接机器人氩气节气设备
  • Nuclei漏洞扫描工具(除了常见漏洞还支持CMS常见漏洞Gitlab、Jira、Splunk、Elastic)
  • 解决Git提交人信息默认全局化问题:让提交人自动关联当前用户
  • sklearn study notes[3]
  • Kong vs. NGINX:从反向代理到云原生网关的全景对比
  • 从零开始学习:深度学习(基础入门版)(1天)
  • [激光原理与应用-168]:测量仪器 - 对光学指标进行测量的仪器
  • 从“数字网格”到“空中交警” :星图低空云如何重构低空管理?
  • 嵌入式第二十二课!!!链式队列与哈希表
  • Maven分模块开发实战指南