Python中模块pymysql查询结果后如何获取字段列表

前言

大家在使用pymysql的时候,通过fetchall()fetchone()可以获得查询结果,但这个返回数据是不包含字段信息的(不如php方便)。查阅pymysql源代码后,其实获取查询结果源代码也是非常简单的,直接调用cursor.description即可。

譬如:

db = pymysql.connect(...)
cur = db.cursor()
cur.execute(sql)
print(cur.description)
result = cur.fetchall()
data_dict=[]
for field in cur.description:
 data_dict.append(field[0])
print(data_dict)

在pymysql的pymysql/cursors.py中,找到class Cursor可以看到如下代码:

def __init__(self, connection):
 self.connection = connection
 self.description = None
 self.rownumber = 0
 self.rowcount = -1
 self.arraysize = 1
 self._executed = None
 self._result = None
 self._rows = None
 self._warnings_handled = False

因此,调用cur.rowcount是可以迅速返回查询结果记录数的,不需要通过len()获得。

总结

好了,先说到这里了。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Python中列表list以及list与数组array的相互转换实现方法

    本文实例讲述了Python中list以及list与array的相互转换实现方法.分享给大家供大家参考,具体如下: python中的list是一种有序集合,可以随时增删元素: # -*- coding: utf-8 -*- frameID = 1 frameID_list = [] frameID_list.append(frameID) print (frameID_list) frameID = 2 frameID_list.append(frameID) print (frameID_lis

  • Python 列表理解及使用方法

    Python 列表理解及使用方法 列表是最常用的Python最常用的数据类型,它和其它序列一样,可以进行包括索引,切片,加,乘,检查成员的操作.列表的数据项不需要具有相同的类型,将数据项放在方括号内,中间用逗号隔开,如: list1 = ['test',3,4] 下面将学习的列表相关方法总结了一下,留待以后查看. 1.append append方法用于在列表末尾追加新的对象: >>> lst = [1,2,3] >>> lst.append(4) >>>

  • Python实现删除列表中满足一定条件的元素示例

    本文实例讲述了Python实现删除列表中满足一定条件的元素.分享给大家供大家参考,具体如下: 从列表中删除满足一定条件的元素. 如:删除一个列表中长度为0的元素,或者删除列表中同时是2和3的倍数的元素. 做过高级语言编程的人想当然的会认为"这很简单",可以如下面的方式来实现: for i in listObj: if(...): listObj.remove(i) 看下一个小例子和结果: a = [1, 2, 3, 12, 12, 5, 6, 8, 9] for i in a: if

  • Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】

    本文实例讲述了Python列表list操作符.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 列表也可以使用比较操作符,比较时更加ASCII进行比较的. 比较列表时也用内建函数cmp()函数: 两个列表的元素分别比较,直到有一方胜出. 元组进行比较操作时和列表遵循相同的逻辑. 列表的切片操作和字符串的切片操作很像, 不过列表的切片操作返回的是一个对象或者几个对象的集合. 列表的切片操作也遵循从正负索引规则,也有开始索引值,结束索引值, 如果这两个值为空,默认为序列的开始和

  • 解决python文件字符串转列表时遇到空行的问题

    文件内容如下: Alex 100000 Rain 80000 Egon 50000 Yuan 30000 #此处有一个空行! 现在看如何处理并转成列表! salary_info = open("salaryinfo.txt", "r+", encoding="UTF-8") salary_info_list = [] for line in salary_info.readlines(): if line == '\n': pass else:

  • 浅谈python for循环的巧妙运用(迭代、列表生成式)

    介绍 我们可以通过for循环来迭代list.tuple.dict.set.字符串,dict比较特殊dict的存储不是连续的,所以迭代(遍历)出来的值的顺序也会发生变化. 迭代(遍历) #!/usr/bin/env python3 #-*- coding:utf-8 -*- vlist=['a','b','c'] vtuple=('a','b','c') vdict={'a': 1, 'b': 2, 'c': 3} vset={'a','b','c'} vstr='abc' for x in vl

  • Python3学习笔记之列表方法示例详解

    前言 本文主要给大家介绍了关于Python3列表方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1 使用[]或者list()创建列表 user = [] user = list() 2 使用list() 可以将其他类型转换成列表 # 将字符串转成列表 >>> list('abcde') ['a', 'b', 'c', 'd', 'e'] # 将元祖转成列表 >>> list(('a','b','c')) ['a', 'b', 'c']

  • Python中模块pymysql查询结果后如何获取字段列表

    前言 大家在使用pymysql的时候,通过fetchall()或fetchone()可以获得查询结果,但这个返回数据是不包含字段信息的(不如php方便).查阅pymysql源代码后,其实获取查询结果源代码也是非常简单的,直接调用cursor.description即可. 譬如: db = pymysql.connect(...) cur = db.cursor() cur.execute(sql) print(cur.description) result = cur.fetchall() da

  • Python 中使用 PyMySQL模块操作数据库的方法

    之前用的Python2,连接MySQL用的是MySQLdb.现在换成python3.x了,由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 PyMySQL模块,以下将介绍PyMySQL的安装及常用操作. 一.安装 pip install PyMySQL 二.常用操作 查询数据 import pymysql # 连接数据库 conn = pymysql.connect( host='127.0.0.1', user='root', pa

  • python中fastapi设置查询参数可选或必选

    目录 可选查询参数 必选查询参数 可选和必选参数共存 为可选参数做类型提示 前言: 在fastapi中,我们定义的查询参数是可以设置成:必选参数 or 可选参数. 可选查询参数 z只要给查询参数的默认值设置为None,表示该查询参数是可选参数.  from fastapi import FastAPI  ​  app = FastAPI()​  @app.get("/items/{item_id}")  async def read_item(item_id: str, q=None)

  • python中模块的__all__属性详解

    python模块中的__all__属性,可用于模块导入时限制,如: from module import * 此时被导入模块若定义了__all__属性,则只有__all__内指定的属性.方法.类可被导入. 若没定义,则导入模块内的所有公有属性,方法和类 # kk.py class A(): def __init__(self,name,age): self.name=name self.age=age class B(): def __init__(self,name,id): self.nam

  • 浅谈python中字典append 到list 后值的改变问题

    看一个例子 d={'test':1} d_test=d d_test['test']=2 print d 如果你在命令行实践的话,会发现你改动的是d_test ,但是d 也跟着改变了. 通常这和我们期待的不一样. Why? 因为字典d 是一个object ,而d_test=d并没有真正的将该字典在内存中再次创建.只是指向了相同的object.这也是python 提高性能,优化内存的考虑. 实际场景 d={"name":""} l=[] for i in xrange

  • 在python中使用pymysql往mysql数据库中插入(insert)数据实例

    咱还是直接看代码吧! from pymysql import * def main(): # 创建connection连接 conn = connect(host='', port=3306, database='', user='', password='', charset='utf8') # 获取cursor对象 cs1 = conn.cursor() # 执行sql语句 query = 'insert into 表名(列名1, 列名2, 列名3, 列名4, 列名5, 列名6) value

  • 关于python中模块和重载的问题

    模块和重载 简单来讲,任意一个以.py结尾的python文件都是一个模块.例如有A.py和B.py两个文件.在A中可以通过导入B来读取B模块定义的内容,导入操作本质上就是载入另一个文件. 基于模块的模型是python程序架构背后的核心思想. 一个大型python程序往往以多个模块文件的形式出现,并且从其它模块导入工具.但是通常会指定一个模块文件作为主文件(也叫顶层文件),该文件启动之后,就会运行整个程序.除了顶层文件之外的其他文件都是导入模块. 导入操作将会导致模块中的代码被运行,因此导入文件也

  • python中模块导入模式详解

    目录 模块导入 1.1 import导入模块 1.2 from 模块名 import 导入模板的方法 1.3 as 关键字 OS模块操作文件 OS模块的作用 模块的制作.发布.安装 3.1 模块制作 3.2 模块的分 3.3 示例 3.4 测试方法 3.5 all魔术方法 模块导入 1.1 import导入模块 所谓的模块其实就是一个外部的工具包,其中存在的其实就是Python文件,这些文件都实现了某种特定的功能,我们导入包之后直接使用即可,非常的方便. 在开发中使用最多的就是使用: impor

  • 使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例

    我就废话不多说了,大家还是直接看代码吧! from pymysql import * from qmp.config import * def main(): conn = connect(host=HOST, port=3306, database=DATABASE, user=USER, password=PASSWORD, charset='utf8') cs1 = conn.cursor() sql1 = 'SELECT deal_name from ods_project_crawle

  • python中使用正则表达式将所有符合条件的字段全部提取出来

    问题如标题,使用正则表达式匹配字段目前无非就三种,分别是: re.match() re.search() re.findall() 简单介绍一下,re.match()与re.search()非常类似,主要区别就是前者是从目标字符串的开头匹配,而后者则要没有这个要求.而re.findall()则是可以返回匹配的所有结果.但是有时候re.findall()返回的结果和前面两个并不一样,我们来看下面一个例子: 对于句子: 起病以来,患者无腰背痛.颈痛,无咽痛.口腔溃疡,无光过敏.脱发,无口干.眼干,无

随机推荐