如何使用Python的SQLAlchemy打印列名及其对应值?
如何在SQLAlchemy中打印带列名的查询结果
嘿,这事儿好办!你现在用SQLAlchemy查询只拿到了值的元组,想要像MySQL那样输出列名+对应值的格式对吧?我给你两种实用的方法:
方法一:针对单行结果
直接利用查询结果的keys()方法获取列名(包括你用label()设置的别名哦),然后先打印表头再打印值:
from sqlalchemy import create_engine, MetaData, Table, select # 初始化数据库连接和表结构 engine = create_engine('你的数据库连接字符串') # 比如'mysql+pymysql://user:pass@host/db' meta = MetaData(engine) users = Table('USER', meta, autoload=True) # 构建带别名的查询(和你要的MySQL语句对应) selectQuery = select([users.c.ID.label('User_ID'), users.c.NAME]).where(users.c.ID == '1') # 执行查询并输出 with engine.connect() as conn: result = conn.execute(selectQuery) row = result.fetchone() # 获取列名(这里会显示User_ID和NAME) column_names = result.keys() # 打印表头,用制表符分隔对齐 print('\t'.join(column_names)) # 打印对应的值,转成字符串避免类型问题 print('\t'.join(str(value) for value in row))
执行后你就能得到类似这样的输出:
User_ID NAME
1 John
方法二:处理多行结果
如果你的查询返回多条数据,只需要在获取表头后循环遍历结果行就行:
with engine.connect() as conn: result = conn.execute(select(users)) # 比如查询全表 column_names = result.keys() # 先打印表头 print('\t'.join(column_names)) # 遍历每一行打印 for row in result: print('\t'.join(str(value) for value in row))
输出就会和MySQL控制台查询的格式一致啦!
内容的提问来源于stack exchange,提问作者krutik
相关产品推荐
相关产品推荐

