返回顶部
首页 > 资讯 > 数据库 >python MySQLdb 模块
  • 628
分享到

python MySQLdb 模块

模块pythonMySQLdb 2023-01-31 06:01:18 628人浏览 薄情痞子
摘要

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

  用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写的不行其他的都白瞎了

您可能感兴趣的文档:

--结束END--

本文标题: python MySQLdb 模块

本文链接: https://lsjlt.com/news/190085.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python MySQLdb 模块
      用python操作mysql数据库,就会用到MySQLdb模块,这个模块其实和文件数据库SQLite的操作方式一样的先来看一下这模块的简单实用插入数据import MySQLdb #创建一个mysql的连接对象   conn = MyS...
    99+
    2023-01-31
    模块 python MySQLdb
  • python之MySQLdb模块
    防伪码:忘情公子著  MySQLdb是用来通过python控制mysql数据库的一个模块。  在说这个模块之前,我们先来想一下在命令行模式下操作mysql数据库的步骤,一般来说分为三步:...
    99+
    2024-04-02
  • python安装mysqldb模块
    mysqldb模块已经很久没有在维护了,但是很多人习惯使用mysqldb.从官方下载的安装包是32位,而我们的系统都是64位的因此安装会找不到python的环境变量或会报下面错误 python version2.7 required,whi...
    99+
    2023-01-31
    模块 python mysqldb
  • Python学习之MySQLdb模块
    CentOS下安装sudo yum install MySQL-python可以参考http://www.mikusa.com/python-mysql-docs/index.html  获取更多信息MySQL-python 为Python...
    99+
    2023-01-31
    模块 Python MySQLdb
  • Python中如何安装MySQLDb模块
    这篇文章将为大家详细讲解有关Python中如何安装MySQLDb模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1,看看有没有安装进入python的命令行,输入 import MySQLd...
    99+
    2023-06-17
  • 如何使用 pip 安装 Python MySQLdb 模块?
    要安装Python MySQLdb模块,我们需要安装Python当前版本,即3.7 我们需要找到 pip 命令所在的 Python 脚本的位置。首先,打开cmd并到达Python脚本的位置。 要打开 cmd,请按“Windows+R”并键入...
    99+
    2023-10-22
  • MySQLdb模块如何操作MySQL数据库
    下面一起来了解下MySQLdb模块如何操作MySQL数据库,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQLdb模块如何操作MySQL数据库这篇短内容是你想要的。1. python连接mysql的...
    99+
    2024-04-02
  • Python中MySQLdb和torndb模块对MySQL的断连问题处理
    在使用python 对wordpress tag 进行细化代码处理时,遇到了调用MySQLdb模块时的出错,由于错误提示和问题原因相差甚远,查看了N久代码也未发现代码有问题。后来问了下师傅,被告知MySQL...
    99+
    2022-06-04
    模块 MySQLdb Python
  • 用yum安装MySQLdb模块的步骤方法
    前言 本文主要介绍的是用yum安装MySQLdb模块的步骤,下面话不多说了,来看看详细的介绍吧。 步骤如下 MySQLdb依赖于mysql-devel包,所以首先我们需要先安装mysql-devel包 一...
    99+
    2022-06-04
    模块 步骤 方法
  • python mysqldb
    弄了一个多小时  , 崩溃了。。。。。 http://blog.sina.com.cn/s/blog_5d7ae9750100ij6m.html Python与Mysql 一、安装MySQLdb模块 使用python连接Mysql...
    99+
    2023-01-31
    python mysqldb
  • python操作mysql(一)MySQLdb模块安装和数据库基本操作
    1、ubuntu环境下安装python-MySQLdb sudo apt-get install build-essential python-dev li...
    99+
    2024-04-02
  • 关于pycharm找不到MySQLdb模块的解决方法
    下载包地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python 该页面下找到需要安装的包名 下载完成后,将下载好的My...
    99+
    2024-04-02
  • Python MySQLdb Linux
             本文介绍了Python MySQLdb Linux下安装笔记,本文分别讲解了快速安装和手动编译安装两种方法,并分别讲解了操作步骤,需要的朋友可以参考下      主要针对centos6.5 64位系统           ...
    99+
    2023-01-31
    Python MySQLdb Linux
  • Python模块:time模块
    time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一...
    99+
    2023-01-31
    模块 Python time
  • python模块:smtplib模块
    1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默...
    99+
    2023-01-31
    模块 python smtplib
  • python 安装mysqldb
    第一次安装:easy_install MySQLdb失败找不到包名,原因是名称错误正确的是:pip install  MySQL-python然后编译报错: Command "/usr/bin/python2.7 -c "import se...
    99+
    2023-01-31
    python mysqldb
  • python安装mysqldb
    1.安装setuptools-0.6c11wget --no-check-certificate  http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11....
    99+
    2023-01-31
    python mysqldb
  • python操作mysqldb
    下载安装MySQLdb<1>linux版本http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在下载文件目录下,修改mysite.cfg,指...
    99+
    2023-01-31
    操作 python mysqldb
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • 使用Python模块:struct模块
    Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的) 1)bytes、str...
    99+
    2023-01-31
    模块 Python struct
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作