python graphql query返回一组字典数据_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...
首先使用一個變量接收你以上的查詢結(jié)果。這個查詢結(jié)果是一個list,在這個list中包含著一個或多個tuple,其實這并不是標準的Python tuple,而是一個特殊的類型"",這是一個 AbstractKeyedTuple 對象,它擁有一個 keys() 方法。我們可以通過這個方法將查詢結(jié)果轉(zhuǎn)換為字典,需要傳到前端展示只需要將其裝換為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 #創(chuàng)建對象的基類:
10 Base =declarative_base()11
12
13 defget_yun_session():14 """
15 初始化yun數(shù)據(jù)庫連接16 :return:17 """
18 #'數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動名稱://用戶名:口令@機器地址:端口號/數(shù)據(jù)庫名'
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.代碼中設(shè)計到的數(shù)據(jù)庫連接的配置文件:
1 classAppConfig(object):2 #數(shù)據(jù)庫相關(guān)(測試)
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查詢出來的結(jié)果是一個list,
首先,使用一個變量接收你以上的查詢結(jié)果。
其次,在這個list中包含著一個或多個tuple,其實這并不是標準的Python tuple,而是一個特殊的類型"",
這是一個 AbstractKeyedTuple 對象,它擁有一個 keys()方法。
最后,我們可以通過這個方法將查詢結(jié)果轉(zhuǎn)換為字典,需要傳到前端展示只需要將其裝換為json格式即可。
示例:data = [dict(zip(result.keys(), result)) for result in results]
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python graphql query返回一组字典数据_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洪涝灾害的成因是什么意思(洪涝灾害的成因
- 下一篇: python项目策划书_跟着销售学pyt