首先使用一个变量接收你以上的查询结果。这个查询结果是一个list,在这个list中包含着一个或多个tuple,其实这并不是标准的Python tuple,而是一个特殊的类型"",这是一个 AbstractKeyedTuple 对象,它拥有一个 keys() 方法。我们可以通过这个方法将查询结果转换为字典,需要传到前端展示只需要将其装换为json格式即可。

示例:data = [dict(zip(result.keys(), result)) for result in results]

1.获取session

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 __author__ = "JentZhang"

4 from utils.config importAppConfig5 from sqlalchemy.ext.declarative importdeclarative_base6 from sqlalchemy.orm importsessionmaker, relationship7 from sqlalchemy importcreate_engine, text, event8

9 #创建对象的基类:

10 Base =declarative_base()11

12

13 defget_yun_session():14 """

15 初始化yun数据库连接16 :return:17 """

18 #'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'

19 engine =create_engine(20 "mysql+pymysql://%s:%s@%s:%s/%s?charset=utf8" %(21 AppConfig.USER, AppConfig.PASSWORD, AppConfig.HOST, AppConfig.PORT, AppConfig.DATABASE_YUN),22 max_overflow=AppConfig.MAX_OVERFLOW,23 pool_size=500, #连接池大小

24 pool_timeout=30, #池中没有线程最多等待的时间,否则报错

25 pool_recycle=100 #多久之后对线程池中的线程进行一次连接的回收(重置)

26 )27 session_maker = sessionmaker(bind=engine)28 return session_maker()

2.使用原生sql查询

1 #!/usr/bin/env python

2 #-*- coding:utf-8 -*-

3 __author__ = "JentZhang"

4

5 from utils.mysql_utils importget_yun_dw_session, get_yun_session6 from model importfac_broker, fac_message7 from sqlalchemy importtext8

9

10 def get_user_list_dal(*args, **kwargs):11 """

12 获取用户列表13 :param args:14 :param kwargs:15 :return:16 """

17 session =get_yun_session()18 sql_str = """

19 SELECT20 a.user_id,21 a.city_id,22 a.`name`,23 a.mobile,24 DATE_FORMAT(a.create_time, '%Y-%m-%d') AS create_date,25 IFNULL(26 DATE_FORMAT(27 a.login_first_time,28 '%Y-%m-%d'29 ),30 ''31 ) AS login_first_date,32 IFNULL(33 DATE_FORMAT(c.last_login, '%Y-%m-%d'),34 ''35 ) AS last_login_date,36 (37 CASE38 WHEN isnull(d.user_id) THEN39 '自然下载'40 ELSE41 d.channel_name42 END43 ) AS channel_name44 FROM45 card_broker a46 LEFT JOIN fang_webgetcity b ON a.city_id = b.city_id47 LEFT JOIN account_user c ON a.user_id = c.id48 LEFT JOIN View_Broker_Channel d ON a.user_id = d.new_user_id49 where a.create_time>'2020-04-01'50 """

51 res_rows =session.execute(text(sql_str)).fetchall()

54 session.close()55 result = [dict(zip(result.keys(), result)) for result inres_rows]56 print(result)57

58

59 if __name__ == '__main__':60 get_user_list_dal()

几点提醒:

1.代码中设计到的数据库连接的配置文件:

1 classAppConfig(object):2 #数据库相关(测试)

3 HOST = '127.0.0.1'

4 PORT = 3306

5 USER = 'root'

6 PASSWORD = 'admin'

7 DATABASE_YUN = 'yun'

8 ECHO =False9

10 MAX_OVERFLOW = 500

2.对于使用原生SQL查询出来的结果是一个list,

首先,使用一个变量接收你以上的查询结果。

其次,在这个list中包含着一个或多个tuple,其实这并不是标准的Python tuple,而是一个特殊的类型"",

这是一个 AbstractKeyedTuple 对象,它拥有一个 keys()方法。

最后,我们可以通过这个方法将查询结果转换为字典,需要传到前端展示只需要将其装换为json格式即可。

示例:data = [dict(zip(result.keys(), result)) for result in results]

python graphql query返回一组字典数据_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...相关推荐

  1. 【Flask项目】sqlalchemy原生sql查询,返回字典形式数据

    在原生sql查询的时候,返回一个list,内部是tuple,他们看似是tuple,实则并不是 而是一个特殊的类型"<class 'sqlalchemy.util._collection ...

  2. jpa 原生sql 查询返回一个实体_JPA查询--使用原生sql 并且把查询结果转为实体对象...

    这篇文章主要记录 使用原生sql查询 并且把查询结果转为实体对象, 注意:这儿使用的数据库 是oracle数据库 这儿记录了三种查询:精确查询,模糊查询,分页查询. 1.把原生sql查询的结果转为实体 ...

  3. python随机字典数据_python数据类型-字典

    本节主要内容: 1. 字典的简单介绍 2. 字典增删改查和其他操作 3. 字典的嵌套 字典 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成.在dict中key是唯一 ...

  4. python向it新增5个元素_Python序列、元组、列表、集合及字典笔记整理

    一.Python中序列的分类 1.Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list.tuple.range 专门处理文本的附加序列类型(T ...

  5. python读取序列5之后的数据_Python 基本功: 5. 数据序列化

    这篇文章紧接着前篇:多多教Python:Python 基本功: 4. 读写文件​zhuanlan.zhihu.com 仔细阅读的小伙伴会发现,在基本功4 里最后的一个示例中,我们读取解析了文件中的内容 ...

  6. python 字符串转字典 编码_python基础--2(字符串、元组、列表、字典、集合、文件、编码转码)...

    python支持的数据类型 int 整数型 float 浮点型 complex 复数,实数+虚数,虚数部分以"j"或"J"结尾,a+bj或者complex(a, ...

  7. python 列表 元祖 字典 集合_python基础知识之列表、元祖、字典、集合、字符串。...

    1.可变类型之列表 列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等 ```python names='zhangyang guyun xiangpeng xulia ...

  8. python读取序列5之后的数据_Python核心编程读笔 5: python的序列

    第六章 序列:字符串.列表.元组 一.序列 (1)序列类型操作符 seq[ind] 获得下标为 ind 的元素 seq[ind1:ind2] 切片操作 seq * expr 序列重复 expr 次 s ...

  9. python怎么读取csv的一部分数据_python批量读取csv文件 如何用python将csv文件中的数据读取成数组...

    如何用python把多个csv文件数据处理后汇总到新csv文件你看这月光多温柔,小编转头还能看见你,一切从未坍塌. 可以用pandas读取数据,首先把文件方同一个文件价里,然后对当前文件价的所有内容循 ...

最新文章

  1. 民族、学历学位、所学专业、、专业技术职务 对应表
  2. 俄亥俄州立大学计算机科学排名,俄亥俄州立大学CS专业排名2020年
  3. 七夕了!!聊聊《最受欢迎的男友职业排行榜Top10》
  4. PyQt5 快速开发 与 实战
  5. 华为手机怎么下载linux命令,在linux命令
  6. CISCO安全 ×××技术
  7. Apache Flink 零基础入门(三):DataStream API 编程
  8. linux四种网络模式,Linux三种网络连接模式
  9. Wl,-rpath的格式问题,Wl,--rpath
  10. MyBatis中foreach的用法
  11. maya2014中uvlayout2.08安装
  12. 【ARM编程】ARM介绍
  13. qq空间批量下载别人的qq相册
  14. Roxe:大涨时毅然销毁99% ROC 专注解决跨境汇款难题
  15. Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具
  16. 【java毕业设计】基于javaEE+SSM+MySql的个人博客系统设计与实现(毕业论文+程序源码)——个人博客系统
  17. matlab模拟风场竖桥向时程,大跨度桥梁三维脉动风场的计算机模拟
  18. 如何批量下载网站网页
  19. 怎样恢复华为计算机,华为电脑一键还原怎么操作详细教程
  20. 数据仓库—stg层_数据仓库(一):认识数据仓库

热门文章

  1. 花费一天时间基于Vue创建的epub小说阅读器效果展示及源码分享
  2. IDEA配置java《算法》第四版环境(耗时6小时,总算配置成功了,希望能给大家一点帮助)
  3. stm32之iap实现应用(基于串口,上位机,详细源码)
  4. python 等值线 标注 间距、控制_python - Matplotlib-Contourf-如何使刻度线间距不均匀? - 堆栈内存溢出...
  5. 没有add framework support选项_什么?小型机房没有“线”也能很好的管理机房?
  6. 对于ARM的启动,系统升级,烧写过程和文件系统等方面的总结分析
  7. java web微服务是什么_java微服务是什么
  8. opencv 图像 抠图 算法_我讨厌这个绿油油的头像!我用opencv换一下背景
  9. 记-PHPExcel下载
  10. gradle多项目 svn依赖