我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python MySQLdb 模块

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python MySQLdb 模块

  用python操作mysql数据库,就会用到MySQLdb模块,这个模块其实和文件数据库SQLite的操作方式一样的

先来看一下这模块的简单实用

插入数据

import MySQLdb
#创建一个mysql的连接对象  
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')
#创建操作游标,一切对数据库的操作都是调用游标里的方法  
cur = conn.cursor()
"""
这里要注意,和其他模块不同的就是value里面参数的占位符,在mysql里面不管要value的值是什么类型,占位符只有%s一种模式。这要切记~~!! 
""" 
reCount =cur.execute('insert into UserInfo(Name,age) values(%s,%s)',('alex',18))
#执行插入语句会返回成功插入的条目数。可以将这个条目数打印出来
print reCount
conn.commit()  
cur.close()
conn.close()

这段代码有点数据库基础的的就可以看懂,其实就是在cur.execute()方法的括号里写入要执行的sql语句就好了。


如果有多条语句需要插入,最简单的使用for循环的方式插入数据。但是模块自带了executemany方法可以更加方便的实现多条语句同时插入的功能

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')
cur = conn.cursor()
#以元组为单位,存入要插入的values值
li =[
     ('alex','usa'),
     ('sb','usa'),
]
#这里改成调用executemany()方法一次操作多条数据
reCount = cur.executemany('insert into UserInfo(Name,Address) values(%s,%s)',li)
conn.commit()
cur.close()
conn.close()
print reCount


查询操作是我们最常用的数据库操作,模块也为我们提供了很多选项

查询操作

import MySQLdb
conn = MySQLdb.connect(host='192.168.10.105',user='wgw',passwd='123456',db='wgwtest')
cur = conn.cursor()
reCount = cur.execute('select * from user_list')
#通过fetchone方法获取一条结果
print cur.fetchone()
print 'select %s lins'%reCount

上面的代码执行结果是

(1L, 1L, 'wgw', '123456', 0L)
select 3 lins

返回的统计结果是查询到了3条数据,我们只获得了一条。这是怎么回事?这是因为我们使用了fetchone方法。这个方法不管查询了多少条数据,它只取第一条。另外我们看到查询结果里面的有很多的L,这个L是表示我们查询出来的数字类型是Long int 长×××的。


那如果我们要获取所有的查询结果怎么办呢?那就用fetchall()方法

#!/usr/bin/env python
# -*-coding:utf-8-*-
import MySQLdb
conn = MySQLdb.connect(host='192.168.10.105',user='wgw',passwd='123456',db='wgwtest')
cur = conn.cursor()
reCount = cur.execute('select * from user_list')
#通过fetchall方法获取全部结果
print cur.fetchall()
print 'select %s lins'%reCount

这次的执行结果如下

((1L, 1L, 'wgw', '123456', 0L), (2L, 2L, 'alex', '123456', 1L), (3L, 3L, 'eric', '123456', 0L))
select 3 lins

这样就查询出来了所有数据条目,fetchall的运行结果是用一个大的元组包含了所有的数据条目,其中每一个数据条目都用一个小元组表示。但是这种元组套元组的方式也很麻烦。比如我们要取用户名的字段值,那需要对元组的内容进行切片,先切大的再切小的。是不是很麻烦?这个我们也有办法解决。问题就是处在游标对象身上


我们创建游标的对象的时候用的语句是

cur = conn.cursor()

这种模式,默认获取的结果都以元组形式展现。我们现在换一种创建对象的方法

cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)

这种方式指定了游标以字典的形式返回数据,我们来看看效果。

先看看fetchone

#!/usr/bin/env python
# -*-coding:utf-8-*-
import MySQLdb
conn = MySQLdb.connect(host='192.168.10.105',user='wgw',passwd='123456',db='wgwtest')
#cur = conn.cursor()
#指定游标的数据返回类型
cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
reCount = cur.execute('select * from user_list')
#通过fetchall方法获取全部结果
print cur.fetchall()
print 'select %s lines'%reCount

运行结果如下

{'tid': 1L, 'passwd': '123456', 'login_count': 0L, 'uid': 1L, 'name': 'wgw'}
select 3 lines

返回的查询结果变成字典形式了,字典的key就是字段名称,value就是我们查询的字段值。这样我们通过fetchone['name']这可以获得用户名。别切片方式省事多了


再看看fetchall的效果

#!/usr/bin/env python
# -*-coding:utf-8-*-
import MySQLdb
conn = MySQLdb.connect(host='192.168.10.105',user='wgw',passwd='123456',db='wgwtest')
#cur = conn.cursor()
#指定游标的数据返回类型
cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
reCount = cur.execute('select * from user_list')
#通过fetchall方法获取全部结果
print cur.fetchall()
print 'select %s lines'%reCount

运行结果如下:

({'tid': 1L, 'passwd': '123456', 'login_count': 0L, 'uid': 1L, 'name': 'wgw'}, {'tid': 2L, 'passwd': '123456', 'login_count': 1L, 'uid': 2L, 'name': 'alex'}, {'tid': 3L, 'passwd': '123456', 'login_count': 0L, 'uid': 3L, 'name': 'eric'})
select 3 lines

看结果每个数据条目的内容已经用字典表示了,但是fetchall()方法还是会在结果最外层加个元组封装。这是没办法的事情了,但那也比最原始的模式要好操作的多。


使用MySQLdb模块,个人的感觉就3点

1、游标的获取类型指定为字典类型

2、如果查询结果只有一条就用fetchone()方法,这样可以少处理一层元组

3、好好学学数据库SQL语言,这个模块的核心还是调用数据库的SQL实现的。SQL写的不行其他的都白瞎了

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python MySQLdb 模块

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python MySQLdb 模块

用python操作mysql数据库,就会用到MySQLdb模块,这个模块其实和文件数据库SQLite的操作方式一样的先来看一下这模块的简单实用插入数据import MySQLdb#创建一个mysql的连接对象  conn = MySQLdb
2023-01-31

python安装mysqldb模块

mysqldb模块已经很久没有在维护了,但是很多人习惯使用mysqldb.从官方下载的安装包是32位,而我们的系统都是64位的因此安装会找不到python的环境变量或会报下面错误python version2.7 required,whic
2023-01-31

Python学习之MySQLdb模块

CentOS下安装sudo yum install MySQL-python可以参考http://www.mikusa.com/python-mysql-docs/index.html  获取更多信息MySQL-python 为Python
2023-01-31

Python中如何安装MySQLDb模块

这篇文章将为大家详细讲解有关Python中如何安装MySQLDb模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1,看看有没有安装进入python的命令行,输入 import MySQLd
2023-06-17

如何使用 pip 安装 Python MySQLdb 模块?

要安装Python MySQLdb模块,我们需要安装Python当前版本,即3.7我们需要找到 pip 命令所在的 Python 脚本的位置。首先,打开cmd并到达Python脚本的位置。要打开 cmd,请按“Windows+R”并键入
2023-10-22

Python中MySQLdb和torndb模块对MySQL的断连问题处理

在使用python 对wordpress tag 进行细化代码处理时,遇到了调用MySQLdb模块时的出错,由于错误提示和问题原因相差甚远,查看了N久代码也未发现代码有问题。后来问了下师傅,被告知MySQLdb里有一个断接的坑 ,需要进行数
2022-06-04

python mysqldb

弄了一个多小时  , 崩溃了。。。。。http://blog.sina.com.cn/s/blog_5d7ae9750100ij6m.htmlPython与Mysql一、安装MySQLdb模块使用python连接Mysql的前提,就是需要一
2023-01-31

用yum安装MySQLdb模块的步骤方法

前言 本文主要介绍的是用yum安装MySQLdb模块的步骤,下面话不多说了,来看看详细的介绍吧。 步骤如下 MySQLdb依赖于mysql-devel包,所以首先我们需要先安装mysql-devel包一、可以去官网下载mysqldevel的
2022-06-04

Python MySQLdb Linux

本文介绍了Python MySQLdb Linux下安装笔记,本文分别讲解了快速安装和手动编译安装两种方法,并分别讲解了操作步骤,需要的朋友可以参考下      主要针对centos6.5 64位系统               默认pyt
2023-01-31

python安装mysqldb

1.安装setuptools-0.6c11wget --no-check-certificate  http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.
2023-01-31

python 安装mysqldb

第一次安装:easy_install MySQLdb失败找不到包名,原因是名称错误正确的是:pip install  MySQL-python然后编译报错: Command "/usr/bin/python2.7 -c "import se
2023-01-31

python模块:smtplib模块

1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默
2023-01-31

Python模块:time模块

time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一
2023-01-31

Python 3安装MySQLdb

Python 2安装的是mysql-python,Python 3安装mysql-python以后,仍然不能import MySQLdb,原来Python 3应该安装mysqlclient,就可以import MySQLdb了。
2023-01-30

python操作mysqldb

下载安装MySQLdb<1>linux版本http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在下载文件目录下,修改mysite.cfg,指定本地mys
2023-01-31

使用Python模块:struct模块

Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的)1)bytes、strbytes是Pyth
2023-01-31

编程热搜

目录