FastAPI+Sqlalchemy执行【Mysql】原生sql

一. 前言

  • 当有的复杂sql 用orm不好写出来的时候,此时想要用原生sql查询
    • 原生sql查询,查出的结果是对象
    • 原生sql查询,查询结果列表套元组

当你使用 SQLAlchemy 并希望通过创建的 session 对象来执行原生 SQL 语句时,可以使用 session.execute() 方法。这种方式允许你直接在数据库中运行 SQL 语句,同时仍然能够享受 SQLAlchemy 会话管理和事务控制的好处。以下是如何使用 session.execute() 方法执行查询、插入、更新和删除操作的示例。

二. 使用

from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy import create_engineengine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/db001", max_overflow=0, pool_size=5)
Session = sessionmaker(bind=engine)
session = Session()

2.1. 执行原生sql方式一:

2.1.1 查询方式一:

cursor = session.execute('select * from users')
result = cursor.fetchall()
print(result) #列表套元组
# 添加
cursor = session.execute('insert into users(name,email) values(:name,:email)',params={"name": 'lqz', 'email': '3333@qq.com'})
session.commit()
print(cursor.lastrowid)

2.1.2. 基本使用方式

1.执行查询操作

def execute_query(sql: str):try:result = session.execute(sql)# 对于查询操作,通过fetchall()获取所有结果rows = result.fetchall()# 将结果转换为字典列表results = [dict(row) for row in rows]return resultsexcept Exception as e:session.rollback()raisefinally:session.close()# 调用函数执行查询
sql_query = "SELECT * FROM your_table_name"
query_results = execute_query(sql_query)
print(query_results)

2.执行插入操作

def execute_insert(sql: str, values: dict):try:session.execute(sql, values)session.commit()except Exception as e:session.rollback()raisefinally:session.close()# 插入数据示例
sql_insert = "INSERT INTO your_table_name (column1, column2) VALUES (:value1, :value2)"
values = {"value1": "data1", "value2": "data2"}
execute_insert(sql_insert, values)

3.执行更新操作

def execute_update(sql: str, values: dict):try:session.execute(sql, values)session.commit()except Exception as e:session.rollback()raisefinally:session.close()# 更新数据示例
sql_update = "UPDATE your_table_name SET column1 = :value1 WHERE column2 = :value2"
values = {"value1": "new_data1", "value2": "data2"}
execute_update(sql_update, values)

4.执行删除操作

def execute_delete(sql: str, values: dict):try:session.execute(sql, values)session.commit()except Exception as e:session.rollback()raisefinally:session.close()# 使用示例
sql_delete = "DELETE FROM your_table_name WHERE column1 = :value"
values = {"value": "specific_value_to_delete"}
execute_delete(sql_delete, values)

以上就是关于FastAPI+Sqlalchemy执行【Mysql】原生sql的基本使用,希望对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研数学|张宇《1000题》做不下来怎么办?

不要害怕,你绝对可以做下来! 1000题分为基础题和难题,基础题做题来还好,但是难题就有点偏和怪了,这是大部分考研人对于1000题的一致评价。 我觉得你可以这么做: 基础阶段可以做1000里面比较基础,简单的题…

ReLU Strikes Back: Exploiting Activation Sparsity in Large Language Models

iclr 2024 oral reviewer 评分 688 1 intro 目前LLM社区中通常使用GELU和SiLU来作为替代激活函数,它们在某些情况下可以提高LLM的预测准确率 但从节省模型计算量的角度考虑,论文认为经典的ReLU函数对模型收敛和性能的影响可以忽略不计,同时…

SAP SD学习笔记03 - SD模块中的主数据

上一章讲了SD中的组织单位和SD的简单流程。 SAP SD学习笔记02 - 销售流程中的组织单位-CSDN博客 SAP SD学习笔记01 - 简单走一遍SD的流程:受注,出荷,请求-CSDN博客 这一章讲SD中的主数据: - 得意先Master(客户&…

从最适合自己的地方学习

1)一个人的学习行为,其实就是对新事物的认知由浅入深的过程。在这个过程中,一个人要高效地进行这个过程需要什么呢?全神贯注,反复琢磨。 2)有什么东西能够让自己全神贯注,不惜反复琢磨&#xff…

LeetCode404:左叶子之和

题目描述 给定二叉树的根节点 root ,返回所有左叶子之和。 代码 class Solution { public:int getLeftSum(TreeNode* node, int& sum) {if (node nullptr || (node->leftnullptr &&node->rightnullptr)) return 0;if (node->left) getLeftS…

企业营销线索溯源:拒绝合规风险!

天眼销的线索溯源功能已经上线一段时间了。 溯源功能主要是查找从天眼销下载的企业营销线索的来源,通过输入相应的数据,就能查到该营销线索的来源网站。 虽然我们在所有的宣传介绍都表明我们的数据都是从公开渠道获取的,但是还是有很多用户会…

electron的webview和内嵌网页如何通信

在 Electron 的世界里,webview 标签相当于一个小盒子,里面可以装一个完整的网页,就像一个迷你浏览器。当你想和这个小盒子里的内容说话时(也就是进行通信),这里有几个方法可以帮你做到: 这里只写…

golang es查询的一些操作,has_child,inner_hit,对索引内父子文档的更新

1.因为业务需要查询父文档以及其下子文档,搞了很久才理清楚。 首先还是Inner_hits,inner_hits只能用在nested,has_child,has_parents查询里面 {"query": {"nested": {"path": "comments","query": {"match…

损失函数篇 | YOLOv8更换损失函数之Powerful-IoU(2024年最新IoU)

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…

LangChain:索引(Indexes)--基础知识

引言 在当今信息爆炸的时代,如何高效地获取、处理和利用信息成为了关键。LangChain,作为一种先进的语言模型框架,提供了强大的索引功能,帮助用户更好地管理和应用文本数据。本文将详细介绍LangChain索引中的几个核心组件&#xf…

docker,schedule job和environment variables三者的含义与区别

这三个概念在软件开发和部署中扮演着不同的角色: Docker一般长这样:superlifestyle/sscp-api Schedule Job一般长这样:recorrect_ocr_receipt_status 、Sync2D365 Environment Variables一般长这样:D365_BATCH_OPERATION_SIZE ima…

Vue2.x计算属性

1.计算属性 在Vue 插值表达式内实现一些操作其实非常便利&#xff0c;但如果表达式的逻辑过于复杂&#xff0c;会让插值过于臃肿且难以维护。这时可以考虑使用Vue的计算属性 1.1 不使用计算属性的例子 <!DOCTYPE html> <html><head><meta charset"…

【随笔】Git 高级篇 -- 相对引用1 main^(十二)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

lomobok源码编译学习笔记(1)

lomobok学习笔记&#xff08;1&#xff09; 项目导入 lombok的github地址 GitHub - projectlombok/lombok: Very spicy additions to the Java programming language. 开发工具 idea不知道为啥&#xff0c;装上ant工具也不好用&#xff0c;eclipse默认自带有ant,不需要装。…

基于SpringBoot+vue网上点餐系统包含万字文档

基于SpringBoot的网上点餐系统包含万字文档 项目视频演示: springboot027网上点餐系统包含万字文档 开发系统:Windows 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要…

这一次,阿里能完成变革么

更多精彩内容在公众号。 马云在阿里内网发表题为《致改革 致创新》的帖子。释放支持继续改革信号。全文参考下图 马云在最近的发言中首先引用了阿里巴巴集团董事局主席蔡崇信的一次采访&#xff0c;表示对蔡崇信坦率地承认过去错误的勇敢态度表示赞赏。马云强调&#xff0c;犯错…

Python - 深度学习系列32 - glm2接口部署实践

说明 前阵子&#xff0c;已经对glm2的接口部署做了镜像化。本次的目的是&#xff1a; 1 测试在隔了一阵子&#xff08;忘记&#xff09;的情况下&#xff0c;快速部署时是否有障碍&#xff0c;是不是足够方便2 在算网机环境下&#xff0c;能否快速的实现部署。仅考虑文件方式…

Java包装类和泛型的知识点详解

目录 1 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 2 什么是泛型 3 引出泛型 3.1 语法 4 泛型类的使用 …

「每日跟读」英语常用句型公式 第9篇

「每日跟读」英语常用句型公式 第9篇 1. Go-to ___ 第一选择___ What’s your go-to snack when you’re hungry? (你饿的时候第一选择的零食是什么&#xff1f;) Who’s your go-to friend for advice? (你第一选择的朋友是谁来寻求建议&#xff1f;) Which is your go-t…

Python实现BOA蝴蝶优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…