python - mysql连接器按列名而不是索引调用
问题描述
为了获取SELECT
声明,这就是我通常做的事情:
stmt_select = "SELECT * FROM {0} ORDER BY id".format(tbl)
cursor.execute(stmt_select)
for row in cursor.fetchall():
output.append("%3s | %10s | %19s | %8s |" % (
row[0],
row[1],
row[2],
row[3],
))
这种方法的问题是我需要指定索引列而不是列名。如何访问指定列名而不是始终指定索引?最好不指定我想在 for 循环中获取的列名。
解决方案
这是 namedtuples 的一个非常常见的用法,您可以创建一个 namedtuple - 它允许属性访问。
与问题中的代码相关联的示例:
from collections import namedtuple
DBEntity = namedtuple("DBEntity", ("first_cell","second_cell","third_cell", "fourth_cell"))
stmt_select = "SELECT * FROM {0} ORDER BY id".format(tbl)
cursor.execute(stmt_select)
for row in cursor.fetchall():
t_row = DBEntity(*row)
output.append("%3s | %10s | %19s | %8s |" % (
t_row.first_cell,
t_row.seconnd_cell,
t_row.third_cell,
t_row.fourth_cell,
))
此外(尽管根据您的程序的目的可能有点矫枉过正) - 您也可以将sqlalchemy用于 ORM
推荐阅读
- java - Spring Configuration Server 对 MicroService 的不同配置
- python - 在 Pandas 中按列过滤非 NaN 值
- php - 如何使用嵌套的 if 语句检查 PHP 中多个条件的 $_POST 表单数据值?
- ios - swift 类中未调用委托方法
- python - 如何使用循环遍历包含列表的字典、计算某些内容并将结果添加到字典中?
- python - 使用 PyQt 向未聚焦的 QLineEdit 小部件发送假鼠标点击
- c++ - 达到 nullptr 崩溃程序 - 二叉搜索树
- matplotlib - matplotlib 中散点图中的白色图形
- recursion - 有没有办法只显示一次?
- swift - 使我的项目适合所有 iPhone 尺寸