Python MySQLdb返回以数据库字段名为键值的字典形式结果集

使用Python MySQLdb查询出来的结果集是一个数组形式的,访问格式为数组格式,即:

#...连接数据库
sql = 'select a.id, a.group,a.name, a.apk_id, a.ipa_id, b.name as ipa_name, c.name as apk_name from product a left join file_info b on a.ipa_id = b.id left join file_info c on a.apk_id = c.id;'
conn = MySQLdb.connect(host="localhost",user="atool",passwd="atool",db="atool",charset="utf8")
cursor = conn.cursor()
 
n = cursor.execute(sql)
r = cursor.fetchall()
for p in app_info:
    try: 
        print('project %d' % p[0])
    except Exception,ex: 
        print Exception,":",ex
        continue

访问形式使用[0]这种数组索引来访问,非常难懂不方便。这在PHP中是可以自己定义的

array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

通过fetch_style可以配置实用数组下标,还是数据库字段名下面,还是都选择。

实际上,在Python MySQLdb也是可以配置的,只不过配置的地方不是在fetch结果集的时候,而是在数据库连接之后获取cursor的时候,指定一个cursor类型为字典格式即可。如下代码所示:

conn = MySQLdb.connect(host="localhost",user="atool",passwd="atool",db="atool",charset="utf8")
cursor = conn.cursor ( cursorclass = MySQLdb . cursors . DictCursor )

测试一下,即可看到代码效果!Enjoy~

时间: 2024-10-11 13:58:22

Python MySQLdb返回以数据库字段名为键值的字典形式结果集的相关文章

thinkphp中关于数据库字段名大小写问题

在使用thinkphp的时候,我遇到过数据库字段名大小写的问题,使用M()方法的时候,thinkphp默认会寻找小写的数据库字段,通过以下方法解决了:就是修改thinkphp的源码中的Library/Db/Driver.class.php文件,把   PDO::ATTR_CASE => PDO::CASE_LOWER 改为  PDO::ATTR_CASE => PDO::CASE_NATURAL 或者在配置文件里面增加 'DB_PARAMS' => array(\PDO::ATTR_CA

各位老鸟,水晶报表软件能完成填写象健康体检表之类的信息吗,也就是说一张表只有一条记录,字段名和属性值或在一行、或在一列不固定

问题描述 各位老鸟:水晶报表软件能完成填写象健康体检表之类的信息吗,也就是说一张表只有一条记录,字段名和属性值或在一行.或在一列不固定.我用WORD能很好地实现,通过设置WORD模板,以模板为兰图产生一个新WORD文件,在预先设的标签处写入数据信息(文本).但WORD毕竟是第三方软件,还有版本问题,最主要的是在写入时居然不能打开其它的WORD进程(大概是我这个编的有问题),希望老鸟们不吝赐教为盼.usingSystem;usingSystem.IO;usingSystem.Data;usingS

php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位_php技巧

each()定义和用法 each() 函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动. 返回的数组中包括的四个元素:键名为 0,1,key 和 value.单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据. 如果内部指针越过了数组范围,本函数将返回 FALSE. 语法 each(array)参数 描述 array 必需.规定要使用的数组. 例子 1 复制代码 代码如下: <?php $people = array("Pete

图片-js根据键名获取键值的问题!

问题描述 js根据键名获取键值的问题! 有一个数组,我要根据键名获取键值 但是获取不到 代码如下 console.log(data); var jm_bind_data75=$(this).attr('jm-bind-data'); console.log(jm_bind_data75); console.log(data[jm_bind_data75]); if(debug){ console.log(data['carmodel_list']); console.log(data.carmo

Python如何根据键值对字典排序并逐个列出其Key

问题描述 新学Python,请问如何根据键值对字典排序并逐个列出其Key?比如students = {'Alex': 97,'Ben': 95,'Kyoto': 87}需要从高到低排序Alex,Ben,Kyoto.越简洁越好,尽量不要使用Lamda. 解决方案 print ','.join(sorted(std, key=std.get, reverse = True)这样应该可以,在stackoverflow上看到过类似的问题,就记下来了.英文还可以的话多去那看看.解决方案二:http://w

PHP中数组按键名和键值排序函数

而有时我们要求更复杂的排序.如按键名排序,这里用到 ksort($arr); 函数,它会根据数组的键名排序,并维持原有的键值关系.相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系. 同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同. 数组操作是PHP很重要的基础,希望能好好运用. 一维数组 例子  代码如下 复制代码 <?php function my_sor

mysql_query数据查询与列出数据库字段名方法

mysql教程_query() 函数执行一条 MySQL 查询. 语法 mysql_query(query,connection)参数 描述 query 必需.规定要发送的 SQL 查询.注释:查询字符串不应以分号结束. connection 可选.规定 SQL 连接标识符.如果未规定,则使用上一个打开的连接. 说明 如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之. 返回值 mysql_query() 仅对 SELECT,SHOW,EXPL

php中单个数据库字段多列显示

 这篇文章主要介绍了php中单个数据库字段多列显示.分行分列显示技巧,也可称为单字段分页.横向输出,需要的朋友可以参考下       今天在做项目时,遇到个问题就是把从数据库读出来的同一字段分行分列显示,就是每行显示12列,根据总记录数控制循环行数.如果是多字段很好实现,一个循环搞定,如果是一个字段循环那么就比较麻烦了,需要同时用到多个循环还有递增变量,网上也有很多Phper遇到相似的问题,今天小编把自己的解决方案分享大家. 对于同一字段循环多行和控制列显示个数,实现原理就是先用Limit限制读

php each 返回数组中当前的键值对并将数组指针向前移动一步实例_php实例

each函数返回数组中当前的键/值对并将数组指针向前移动一步 基本语法 array each ( array &$array ) 在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元.如果要再用 each 遍历数组,必须使用 reset() . 参数介绍: 参数 描述 array 必需.规定要使用的数组. each() 函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动. 返回值: 返回 array 数组中当前指