首页 > 数据库 >SQLAlchemy实现多条SQL语句参数化查询同时返回结果

SQLAlchemy实现多条SQL语句参数化查询同时返回结果

时间:2024-07-09 18:31:58浏览次数:9  
标签:语句 SQLAlchemy list results result SQL query proxy

SQLAlchemy实现多条SQL语句参数化查询 ,每条SQL所使用的参数不一定相同,每条查询的结果以字典列表形式返回,多条语句的查询结果合并以列表形式返回。

代码实现如下:

def connect_mysql(username, password, host, port, database, params, statements):
    connection_string = f'mysql+pymysql://{username}:{password}@{host}:{port}/{database}'
    engine = create_engine(connection_string)
    with engine.connect() as connection:
        list_query_results = []
        for statement in statements:
            # 创建一个新的字典,只包含当前 SQL 语句需要的参数
            needed_params = {key: value for key, value in params.items() if f':{key}' in statement}
            # 使用text()函数来构造SQL表达式,并传入参数
            stmt = text(statement).bindparams(**needed_params)
            result_proxy = connection.execute(stmt)
            # 初始化一个空列表来存储结果字典
            result_dicts = []
            # 获取列名
            column_names = result_proxy.keys()
            # 遍历结果集中的每一行
            for row_proxy in result_proxy:
                # 创建一个字典来存储这一行的数据
                row_dict = {name: row_proxy._mapping[name] for name in column_names}
                # 将这一行的数据字典添加到结果列表中
                result_dicts.append(row_dict)# 将结果列表添加到总的结果列表中
            list_query_results.append(result_dicts)
            # list_query_results.append(list_query_results.fetchall())
    print("Query executed successfully")
    print(list_query_results)
    return list_query_results

 

标签:语句,SQLAlchemy,list,results,result,SQL,query,proxy
From: https://www.cnblogs.com/lin-yysy/p/18292532

相关文章

  • jvm+mysql索引优化+sql优化
    一、jvm---线程栈  每个线程都会从内存栈分配一块区域,这个区域里放了此线程变量(按方法,一个方法对应一块栈帧内存区域)。Math.class字节码文件不是给人看的,idea中找到Math类,右键找到terminal,输入javap,底下-c对代码进行反汇编命令:javap-cMath.class>math.txt此时,Math类根......
  • 面试官:MySQL死锁是什么,如何解决?
    MySQL死锁概述定义:多个操作相互等待对方释放资源,导致无法继续执行的情况。场景:通常发生在多个事务同时试图锁定对方已锁定的资源时。MySQL锁的分类粒度分类:表级锁:锁定整个表,简单但并发能力低。行级锁:锁定特定行,开销大,可能死锁,但并发度高。页级锁:锁定数据库页,介于表级和......
  • MySQL 源码|LEX 结构体
    LEX结构体源码位置:(版本=MySQL8.0.37)sql/sql_lex.hsql/sql_lex.ccsql/sql_class.ccrouter/src/routing/src/sql_lexer.ccLEX对象当前有以下功能:包含了一些SQL命令的通用属性,例如:sql_command,数据变更语句语法中是否存在IGNORE,以及表列表query_tables包含了一些......
  • Mysql更新数据库密码
    首先登录数据库mysql-uroot-p1234qwer查找数据库用户表所有用户信息SELECT`Host`,`User`,authentication_string,password_last_changedFROMmysql.`user`;更新密码UPDATEmysql.`user`SETauthentication_string=PASSWORD('1234qwert')WHEREuser='root'AND......
  • MYSQL——mysql检索不包含字母U的数据
    2024/07/091.NOTLIKE2.ISNOT、<>、!=3.NOTIN如题,正确答案如下:SELECT*FROMyour_table_nameWHEREyour_column_nameNOTLIKE'%U%';今天写类似检索语句时,脑子突然一懵,写成了ISNOT'%UD%',如下:SELECT*FROMyour_table_nameWHEREyour_column_nameISNOT......
  • Mysql主从复制
    一、主从复制原理主从复制的相关程序:日志二进制日志中继日志(relaylog)线程主服务器:mysqldump线程(传输二进制日志给从服务器)从服务器:IO线程(接收二进制日志,写入中继日志),sql线程(读取中继日志,写入数据库,同步操作达到数据同步)点击查看代码主从复制原理:1.主节点负责......
  • mysql集群高可用架构MHA
    一、MHA概述1.为什么要用MHAMaster的单点故障问题2.什么是MHAMHA(MasterHighAvailability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。MHA的出现就是解决MySQL单点的问题。MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。MHA能在故障切换的过程......
  • 动态SQL
    mybatis中动态sql标签1:if标签  1)数值类型的判断不等于的判断://注意Interge类型的条件判断是否为空的时候一定不要加非空字符串判断,因为当你传的值为0的时候,mybatis会把它判断为空字符串<iftest="equipTypeId!=null">ANDt1.equip_type_id=#{equipTypeId......
  • 快速上手:前后端分离开发(Vue+Element+Spring Boot+MyBatis+MySQL)
    文章目录前言项目简介环境准备第一步:初始化前端项目登录页面任务管理页面第二步:初始化后端项目数据库配置数据库表结构实体类和Mapper服务层和控制器第三步:连接前后端总结......
  • MySQL8.0索引新特性
    文章目录1支持降序索引2隐藏索引1支持降序索引举例:分别在MySQL5.7版本和MySQL8.0版本中创建数据表ts1,结果如下:CREATETABLEts1(aint,bint,indexidx_a_b(a,bdesc));在MySQL5.7版本中查看数据表ts1的结构,从结果可以看出,索引仍然是默认......