Python中让MySQL查询结果返回字典类型的方法,pythonmysql


Python的MySQLdb模块是Python连接MySQL的一个模块,默认查询结果返回是tuple类型,只能通过0,1..等索引下标访问数据
默认连接数据库:

复制代码 代码如下:

MySQLdb.connect(
    host=host,
        user=user,
        passwd=passwd,
        db=db,
        port=port,
        charset='utf8'
)

查询数据:
复制代码 代码如下:

cur = conn.cursor()
cur.execute('select b_id from blog limit 1')
data = cur.fetchall() 
cur.close()
conn.close()

打印:
复制代码 代码如下:

for row in data:
    print type(row)
    print row

执行结果:
复制代码 代码如下:

<type 'tuple'>
(1L,)

为tuple类型。
我们可以这么干使得数据查询结果返回字典类型,即 字段=数据
导入模块
复制代码 代码如下:

import MySQLdb.cursors

在连接函数里加上这个参数  cursorclass = MySQLdb.cursors.DictCursor 如:
复制代码 代码如下:

MySQLdb.connect(
    host=host,
        user=user,
        passwd=passwd,
        db=db,
        port=port,
        charset='utf8',
    cursorclass = MySQLdb.cursors.DictCursor
)

再重新运行脚本,看看执行结果:
复制代码 代码如下:

<type 'dict'>
{'b_id': 1L}

搞定!
注意,在连接的时候port如果要指定则值必须是整型,否则会出错!


python 操作查询mysql数据库 怎判断返回是否为空值?

通常我先检查 cam_row是否为空,然后再检查它的长度,如果长度与你预期的长度1不相符也不对。

加一句 if not cam_row:continue就可以了
 

怎将数据库表中的内容导入到python字典,建了一个表,想把表中的内容放到python的字典中

我就不举例子了。大概说一下思路,参考网上的python的例子,可以查询到需要的数据,是一个列表,假设某个字段用做字典的键值,那么每遇到一个新行,如果键值字段为k,那么
if map.has_key(k):
map[k].append(newrow)
else:
map[k]=[newrow]

不过你说的还是不清楚,而且字典类型的值为何又是字典,直接把查到的行保存起来不就可以了吗?
 

评论关闭