广告
返回顶部
首页 > 资讯 > 数据库 >python之MySQLdb库的使用
  • 819
分享到

python之MySQLdb库的使用

pythonMySQLdb 2023-01-31 07:01:52 819人浏览 安东尼
摘要

 在开发的过程中避免不了和数据库的交互,在实际环境中用的最多的Mysql数据库,那python是怎么和mysql进行交互的呢,Python使用一个叫Mysqldb的库来连接MySQL,好的,下面最要从MySQLdb的安装、连接MySQL、

 在开发的过程中避免不了和数据库的交互,在实际环境中用的最多的Mysql数据库,那python是怎么和mysql进行交互的呢,Python使用一个叫Mysqldb的库来连接MySQL,好的,下面最要从MySQLdb的安装、连接MySQL、执行sql语句、如何取得结果、关闭数据库连接来讲述一下:

  1. MySQLdb的安装

    我使用的是ubuntu系统,安装方法为:apt-get install python-MySQLdb,这样当在python环境执行import MySQLdb不报错就是安

    root@ubuntu:~# python
    Python 2.7.4 (default, Apr 19 2013, 18:32:33)
    [GCC 4.7.3] on linux2
    Type "help", "copyright", "credits" or "license" for more infORMation.
    >>> import MySQLdb
    >>>
  2. 如何连接Mysql

    MySQLdb提供的connect方法用来和数据库建立连接,接收数个参数,返回连接对象,如:conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable",port=3306)

    比较常用的参数包括:
    host:数据库主机名.默认是用本地主机.
    user:数据库登陆名.默认是当前用户.
    passwd:数据库登陆的秘密.默认为空.
    db:要使用的数据库名.没有默认值,如果在这里设置了db,则连接时直接连接到Mysql的db设置的数据库中
    port:MySQL服务使用的tcp端口.默认是3306.

    注:connect中的host、user、passwd等可以不写,只有在写的时候按照host、user、passwd、db(可以不写)、port顺序写就可以,注意端口号port=3306还是不要省略的为好,如果没有db在port前面,直接写3306会报错

    连接成功后,如需切换该用户的其他数据库,使用以下语句:conn.select_db('mysql')形式切换数据库

    >>> con=MySQLdb.connect('localhost','root','123456',port=3306)
    >>> con.select_db('mysql')
    >>> cur=con.cursor()
    >>> cur.execute('show tables')
    24L
    >>> cur.fetchall()
    (('columns_priv',), ('db',), ('event',), ('func',), ('general_log',), ('help_cateGory',), ('help_keyWord',), ('help_relation',), ('help_topic',), ('host',), ('ndb_binlog_index',), ('plugin',), ('proc',), ('procs_priv',), ('proxies_priv',), ('servers',), ('slow_log',), ('tables_priv',), ('time_zone',), ('time_zone_leap_second',), ('time_zone_name',), ('time_zone_transition',), ('time_zone_transition_type',), ('user',))

    第1行:连接数据库    第2行:选择连接mysql这个数据库    第3行以下是获取数据库表,语法后面会讲

  3. 怎么操作数据库,MySQLdb用游标(指针)cursor的方式操作数据库

    因该模块底层其实是调用C api的,所以,需要先得到当前指向数据库的指针

    >>> cur=con.cursor()
  4. 数据库的操作和结果显示

    我们利用cursor提供的方法来进行操作,方法主要是1.执行命令 2.接收结果

    ursor用来执行命令的方法:
    execute(query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
    executemany(query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数

    cursor用来接收返回值的方法:
    fetchall(self):接收全部的返回结果行.
    fetchmany(size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
    fetchone():返回一条结果行.
    scroll(value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条.

    先来看一下execute的增删改查的操作

    #创建数据库51ctotest
    >>> cur.execute('create database 51ctotest')
    #选择数据库51ctotest
    >>>con.select_db('51ctotest')
    #创建表51cto,id自增
    >>>cur.execute('create table if not exists 51cto(id int(11) PRIMARY KEY AUTO_INCREMENT,name varchar(20),age int(3))')
    #插入一行数据,只给name、age赋值,让id自增
    #使用sql语句,这里要接收的参数都用%s占位符.要注意的是,无论你要插入的数据是什#么类型,占位符永远都要用%s,后面的数值为元组或者列表
    >>>cur.execute("insert into 51cto(name,age) values(%s,%s)",('fan',25))
    #插入多行数据,用executemany,它会循环插入后面元组中的所有值
    >>> cur.executemany("insert into 51cto(name,age) values(%s,%s)",(('te',25),('fei',26),('musha',25)))
    3L
    #查询
    >>> cur.execute('select * from 51cto')
    5L
    #我们使用了fetchall这个方法.这样,cds里保存的将会是查询返回的全部结果.每条结果都是一个tuple类型的数据,这些tuple组成了一个tuple
    >>> cur.fetchall()
    ((1L, 'fan', 25L), (2L, 'fan', 25L), (3L, 'te', 25L), (4L, 'fei', 26L), (5L, 'musha', 25L))
    #再次查询,会看到查询不到结果,因为无论fetchone、fetchall、fetchmany指针是会发生移动的。所以,若不重置指针,那么使用fetchall的信息将只会包含指针后面的行内容。使用fetchall把指针挪到了最后,可以用scroll手动把指针挪到一个位置
    >>> cur.fetchall()       
    ()
    >>> cur.scroll(1,'absolute')
    >>> for i in cur.fetchall():
    ...     print i          
    ...
    (2L, 'fan', 25L)
    (3L, 'te', 25L)
    (4L, 'fei', 26L)
    (5L, 'musha', 25L)

    这里有必要说一下scroll:

    cur.scroll(int,parm)
    这里参数含义为:
    int:移动的行数,整数;在相对模式下,正数向下移动,负值表示向上移动。
    parm:移动的模式,默认是relative,相对模式;可接受absoulte,绝对模式。
    #fetchone一次只取一行,指针下移  fetchmany(size)一次去size行
    >>> cur.scroll(1,'absolute')
    >>> cur.fetchone()
    (2L, 'fan', 25L)
    >>> cur.fetchmany(2)
    ((3L, 'te', 25L), (4L, 'fei', 26L))
    #普通取出是元组的形式,再从里面取值不好取,那怎么取成字典的格式呢,MySQLdb中有DictCursor,要做到这点也很简单,那就是建立数据库连接是传递cusorclass参数,或者在获取Cursor对象时传递cusorclass参数即可
    >>> cur = con.cursor(cursorclass=MySQLdb.cursors.DictCursor)  
    >>> cur.execute('select * from 51cto')
    5L
    >>> for i in cur.fetchall():
    ...     print i
    ...
    {'age': 25L, 'id': 2L, 'name': 'fan'}
    {'age': 25L, 'id': 3L, 'name': 'te'}
    {'age': 26L, 'id': 4L, 'name': 'fei'}
    {'age': 25L, 'id': 5L, 'name': 'musha'}
    #更新,习惯%s的用法
    >>> cur.execute('update 51cto set name=%s where id=3',('Mus'))
    >>> cur.scroll(2,'absolute')
    >>> cur.fetchone()        
    {'age': 25L, 'id': 3L, 'name': 'Mus'}
    #在执行完插入或删除或修改操作后,需要调用一下conn.commit()方法进行提交.这样,数据才会真正保 存在数据库中
    >>> con.commit()
    #最后关闭游标,关闭连接
    >>> cur.close()
    >>> con.close()


您可能感兴趣的文档:

--结束END--

本文标题: python之MySQLdb库的使用

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • python之MySQLdb库的使用
     在开发的过程中避免不了和数据库的交互,在实际环境中用的最多的Mysql数据库,那python是怎么和Mysql进行交互的呢,python使用一个叫MySQLdb的库来连接MySQL,好的,下面最要从MySQLdb的安装、连接MySQL、...
    99+
    2023-01-31
    python MySQLdb
  • Python之MySQLdb操作数据库
    一、python操作数据库1.格式:大概分为三部分1234567891011121314151617代码import MySQLdb conn = MySQLdb.c...
    99+
    2022-10-18
  • python下的MySQLdb使用
     下载安装MySQLdb <1>linux版本 http://sourceforge.net/projects/mysql-python/ 下载,在安装是要先安装setuptools,然后在下载文件目录下,修改mysite.c...
    99+
    2023-01-31
    python MySQLdb
  • python MySQLdb安装和使用
    MySQLdb是Python连接MySQL的模块,下面介绍一下源码方式安装MySQLdb:首先要下载下载:请到官方网站http://sourceforge.net/projects/mysql-python/或者点击链接下载http://d...
    99+
    2023-01-31
    python MySQLdb
  • python学习-使用MySQLdb操作
    操作环境为python2.7 centos7一、MySQLdb的安装与配置MySQLdb是用于Python连接mysql数据库的接口,它实现了Python数据库api规范2.0。按照以下方式安装yum install epel-releas...
    99+
    2023-01-31
    操作 python MySQLdb
  • python中怎么利用 mysqldb类库操作数据库
    这期内容当中小编将会给大家带来有关python中怎么利用 mysqldb类库操作数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。安装MySQLdbpip install MySQLdb2.代码impo...
    99+
    2023-06-02
  • 如何使用 pip 安装 Python MySQLdb 模块?
    要安装Python MySQLdb模块,我们需要安装Python当前版本,即3.7 我们需要找到 pip 命令所在的 Python 脚本的位置。首先,打开cmd并到达Python脚本的位置。 要打开 cmd,请按“Windows+R”并键入...
    99+
    2023-10-22
  • python在前端页面使用 MySQLdb 连接数据
    目录1.文件结构2.实验效果3.主文件:main.py4.base.html文件5.update.html文件6.delete.html文件7.search.html文件1...
    99+
    2022-11-13
  • Python基础之numpy库的使用
    numpy库概述 numpy库处理的最基础数据类型是由同种元素构成的多维数组,简称为“数组” 数组的特点: 数组中所有元素的类型必须相同 数组中元素可以用整数索引 序号从0开始 ndarr...
    99+
    2022-06-02
    Python numpy库的用法 Python numpy
  • python之jieba分词库使用
    目录 一. 介绍A. 什么是jieba库B. jieba库的特点和优势C. 安装jieba库 二. 分词基础A. 字典加载B. 分词模式C. 使用示例 三. 自定义词典A. 添...
    99+
    2023-10-11
    python jieba
  • Python调用MySQLdb插入中文乱码的解决
    目录MySQLdb插入中文乱码MySQLdb使用utf-8 编码插入中文数据使用环境第一个问题:插入中文失败第二个问题:能插入之后无法在MySQL中保存刚才插入的数据MySQLdb插...
    99+
    2022-11-13
  • python爬虫之requests库的使用详解
    目录python爬虫—requests库的用法基本的get请求带参数的GET请求:解析json使用代理获取cookie会话维持证书验证设置超时异常捕获异常处理 总结 python爬虫...
    99+
    2022-11-12
  • Python标准库之time库的使用教程详解
    目录1.时间戳2.结构化时间对象3.格式化时间字符串4.三种格式之间的转换time模块中的三种时间表示方式: 时间戳 结构化时间对象 格式化时间字符串 1.时间戳 时间戳1970.1...
    99+
    2022-11-10
  • python numpy库之如何使用matpotlib库绘图
    目录一.Numpy库1.什么是numpy2.Numpy数组和原生Python array数组之间的区别3.Numpy数组 4.numpy数组的运算5.numpy的索引,切片...
    99+
    2022-11-11
  • Python标准库之collections包的使用教程
    前言 Python为我们提供了4种基本的数据结构:list, tuple, dict, set,但是在处理数据量较大的情形的时候,这4种数据结构就明显过于单一了,比如list作为数组在某些情形插入的效率会比...
    99+
    2022-06-04
    标准 教程 Python
  • Python可视化库之HoloViews的使用教程
    目录Python-HoloViews库介绍Python-HoloViews库样例介绍密度图+箱线图散点图+横线图IrisSplom面积图直方图系列RouteChord小提琴图总结参考...
    99+
    2022-11-13
  • python爬虫之pyppeteer库简单使用
    pyppeteer 介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 AP...
    99+
    2022-11-12
  • python标准库模块之json库怎么使用
    今天小编给大家分享一下python标准库模块之json库怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言json,...
    99+
    2023-07-02
  • Python爬虫之Urllib库的基本使
    # get请求 import urllib.request response = urllib.request.urlopen("http://www.baidu.com") print(response.read().decode('...
    99+
    2023-01-30
    爬虫 Python Urllib
  • Python之zhon库的简介、安装、使用方法
    zhon是一个Python库,用于处理中文文本。它提供了一些有用的工具和数据,例如中文标点符号、简体和繁体中文字符集等。安装zhon...
    99+
    2023-09-08
    Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作