我是靠谱客的博主 仁爱冬瓜,最近开发中收集的这篇文章主要介绍python连数据库查询结果类型_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先使用一个变量接收你以上的查询结果。这个查询结果是一个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 #‘数据库类型+数据库驱动名称://用户名:[email protected]:端口号/数据库名‘

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]

原文:https://www.cnblogs.com/JentZhang/p/12625219.html

最后

以上就是仁爱冬瓜为你收集整理的python连数据库查询结果类型_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...的全部内容,希望文章能够帮你解决python连数据库查询结果类型_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部