• 在创建引擎时,将echo参数配置成True,会输出sql执行语句记录。默认False

    create_engine(statsticConf.sqlalchemy_mysql,connect_args={"charset": "utf8mb4"},echo = True)
    #输出如下:

    2018-12-11 15:34:31,814 INFO sqlalchemy.engine.base.Engine SELECT count(`MT4_TRADES`.`TICKET`) AS deal_close
    FROM `MT4_TRADES`
    WHERE `MT4_TRADES`.`LOGIN` = %(LOGIN_1)s AND `MT4_TRADES`.`CMD` IN (%(CMD_1)s, %(CMD_2)s) AND `MT4_TRADES`.`CLOSE_TIME` >= %(CLOSE_TIME_1)s AND `MT4_TRADES`.`CLOSE_TIME` < %(CLOSE_TIME_2)s
    2018-12-11 15:34:31,814 INFO sqlalchemy.engine.base.Engine {'LOGIN_1': 2021400, 'CMD_1': 0, 'CMD_2': 1, 'CLOSE_TIME_1': '1970-01-01 00:00:00.1', 'CLOSE_TIME_2': '2018-10-26 09:47:00.0'}

    我们需要复制sql到数据库验证有效性。从结果来看,并不能直接复制到数据库执行,变量值需要手动修改代入。

  • 改进。官方有提供compile方法。 https://docs.sqlalchemy.org/en/latest/core/internals.html?highlight=statement%20compile#sqlalchemy.engine.interfaces.Compiled
  • t_tradesTable = session.query(sqlQuery.label(quotaValue)).filter( sqlFilter )
    
    print(t_tradesTable.statement.compile(compile_kwargs={'literal_binds': True}))
    

    SELECT count(`MT4_TRADES`.`TICKET`) AS deal_close
    FROM `MT4_TRADES`
    WHERE `MT4_TRADES`.`LOGIN` = 2021400 AND `MT4_TRADES`.`CMD` IN (0, 1) AND `MT4_TRADES`.`CLOSE_TIME` >= '1970-01-01 00:00:00.1' AND `MT4_TRADES`.`CLOSE_TIME` < '2018-10-26 09:47:00.0'

      

sqlachemy 原生sql输出的更多相关文章

  1. entityframework学习笔记--009-使用原生sql语句操作数据

    1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: public class Pay ...

  2. 08章 分组查询、子查询、原生SQL

    一.分组查询 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...

  3. jDialects:一个从Hibernate抽取的支持70多种数据库方言的原生SQL分页工具

    jDialects(https://git.oschina.net/drinkjava2/jdialects) 是一个收集了大多数已知数据库方言的Java小项目,通常可用来创建分页SQL和建表DDL语 ...

  4. 使用hibernate原生sql查询,结果集全为1的问题解决

    问题如下: String sqlTest ="select summary,summaryno from F_Summary"; List<Map<Object, Ob ...

  5. [转]ThinkPHP中如何使用原生SQL

    From : http://huangqiqing123.iteye.com/blog/1540323 TP的模型可以支持原生SQL操作,提供了query和execute两个方法,为什么原生SQL还要 ...

  6. Hibernate 函数 ,子查询 和原生SQL查询

    一. 函数 聚合函数:count(),avg(),sum(),min(),max() 例:(1)查询Dept表中的所有的记录条数. String hql=" select count(*) ...

  7. SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询

    上一篇介绍了入门基础篇SpringDataJPA访问数据库.本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询.部分字段映射.分页等.本文尽量以简单的建模与代码进行展 ...

  8. (25)ASP.NET Core EF查询(复杂查询运算符、原生SQL查询、异步查询)

    1.复杂查询运算符 在生产场景中,我们经常用到LINQ运算符进行查询获取数据,现在我们就来了解下生产场景经常出现几种复杂查询运算符. 1.1联接(INNER JOIN) 借助LINQ Join运算符, ...

  9. laravel的ORM转为原生sql

    注:mysql测试成功,mongoDB测试失败//将laravel的ORM转为原生sql $SubProfits为laravel的ORM对象 $SubProfits = model::where('i ...

随机推荐

  1. Python2.x 和 3.x 的区别

    Python有两个版本,2.x 和 3.x ,两个版本不兼容,3.x 不不考虑对2.x代码的向后兼容. 在3.x中,一些语法,内建函数和对象的行为都有所调整. 大部分的python库都支持 pytho ...

  2. Search in Rotated Sorted Array——LeetCode

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  3. js将数字转换成中文

           var _change = {            ary0:["零", "一", "二", "三", ...

  4. Java日志框架介绍

    一.序言 日志为系统的必不可少的一部分,通过输出的日志我们可以排查线上出现的各种问题,就像断案的线索一样.我们还可以通过日志数据分析用户的行为习惯做大数据分析. 二.日志框架分类及其历史 框架的种类: ...

  5. SHGetSpecialFolderLocation获取开始文件夹

    SHGetSpecialFolderLocation函数可以获取windows 特殊目录 函数原型:(MSDN官方链接:https://msdn.microsoft.com/en-us/library ...

  6. C/C++程序基础 (十)模板和泛型

    什么是泛型编程 基于模板,有效将算法和数据结构分离. 模板 包括类型和参数 模板函数:抽象的函数定义,代表一类同构函数.编译器在其调用位置自动完成对应模板函数的实例化. 模板类:抽象的类定义,代表更高 ...

  7. python格式化输出的方式汇总

    %% 百分号标记 #就是输出一个%%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号整数(十六 ...

  8. datatable中reload和load的区别

    ajax.reload()用于datatable表某个数据的变化而重新加载 ajax.url(url).load() 用于切换url时,datatable重新获取数据,加载.

  9. .Net Core爬虫爬取妹子网图片

    现在网上大把的Python的爬虫教程,很少看见有用C#写的,正好新出的.Net Core可以很方便的部署到Linux上,就用妹子图做示范写个小爬虫 在C#下有个很方便的类库 HtmlAgilityPa ...

  10. 关于PHPExcel 基础使用方法

    $dir=dirname(__FILE__);//找到当前脚本所在路径require_once $dir.'/PHPExcel/PHPExcel.php';$objPHPExcel=new PHPEx ...