iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >python mysql模块
  • 572
分享到

python mysql模块

模块pythonmysql 2023-01-31 06:01:54 572人浏览 泡泡鱼
摘要

    多次使用python操作Mysql数据库,先与大家分享一下,关于如何使用Python操作mysql数据库。mysql并不是python自带的模块,因此需要下载安装。(在windows平台下介绍该使用过程)    1、下载/安装pyt

    多次使用python操作Mysql数据库,先与大家分享一下,关于如何使用Python操作mysql数据库。mysql并不是python自带的模块,因此需要下载安装。(在windows平台下介绍该使用过程)

    1、下载/安装python-mysql

    下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5

    双击下载的文件,一直选择next就可以安装好(前提是必须已经安装了python),注意python-mysql与python对应的版本,否则在使用过程中会出现意想不到的错误。

    

    2、检查是否安装成功

    打开python交互界面,输入import MySQLdb,没有报错表示成功安装。

    如图:

wKiom1Q1BwmhuQFQAAD8KhjDYt0669.jpg

    3、使用方式

    测试数据库为:

wKioL1Q1_PySvM4aAABndSJAeiA507.jpg

    3.1 与数据库建立连接

# 使用MySQLdb.connect()方法
connection = MySQLdb.connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="test")
# host : 主机名(IP)
# port : 端口号,mysql默认为3306
# user : 用户名
# passwd : 密码
# db : 数据库(默认连接的数据库)【可选】
# charset : 编码方式【可选】
# 如果未指定db属性,那么可以使用connection.select_db("数据库名称")选择指定数据库

    3.2 获取游标对象

# 具体的sql执行,都是通过游标对象完成的;通过连接对象的cursor方法获取游标对象
# 初始状态游标执行第一个元素
cursor = connection.cursor()

    3.3 执行SQL语句

# 分为单个SQL执行和批量SQL执行,以及是否参数化(可以防止SQL注入)
# query: sql字符串
# args :如果sql字符串为%s占位符那么args是元组或者列表,如果sql字符串占位符是%(key)s形式## ,那么是字典类型。否则为None(默认)
# 语法1:cursor.execute(query, args)
# 语法2:cursor.executemany(query, args) 
# 范例1:使用语法1查询数据
import MySQLdb
if __name__ == "__main__":
    # create mysql connection
    connection = MySQLdb.connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="test")
    # get cursor 
    cursor = connection.cursor()
    # 返回执行结果数
    # nums = cursor.execute("select * from user where id=%s", [1]) # 使用%s占位符
    nums = cursor.execute("select * from user where id = %(id)s", {"id" : 1}) # 使用%(key)s占位符
    print(nums)
    print(cursor.fetchone())
    
# 范例2:使用语法2查询一条数据
import MySQLdb

if __name__ == "__main__":
    # create mysql connection
    connection = MySQLdb.connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="test")
    # get cursor 
    cursor = connection.cursor()
    # 返回执行结果数;
    nums = cursor.executemany("select * from user where id=%s", [[1], [2]]) 
    print(nums)
    print(cursor.fetchone())
    print(cursor.fetchmany())
    print(cursor.fetchall())
# 结果是:nums = 2, 但是查询结果却是id=2的结果;那是因为nums表示执行了多少个execute方法,# 而执行查询结果,却是覆盖了上一个结果,因此当使用语法2查询时,执行返回最后一个条件的结果

    对上述两种语法,这里做一些阐述:

    1、execute:执行单条sql语句,并返回sql语句执行的结果数量

    2、executemany:执行多条sql语句,内部实际是多次调用execute,但是比显示这样调用效率要高一些,返回execute执行成功的数量(实际就是sql语句的sql执行的结果数量。

    当执行更新(插入、修改、删除)操作时,需要通过connection.commit()显示执行提交,才会将execute或者executemany执行的结果,映射到数据库中。

    当执行查询操作时,需要使用cursor.fetchone()、cursor.fetchmany(size), cursor.fetchall(),获取一个、多个、全部sql执行查询的结果。如果使用cursor.frtchmany()默认会获取一个,如果想获取指定个数,那么可以使用cursor.fetchmany(size=2)方式。

    

    3.4 查询时游标的理解

    3.4.1 游标规则

    如果使用同一个cursor.execute()执行查询结果,初始状态游标执行首个元素,当使用cursor.fetch*时,游标会向下移动;

    cursor.fetchone : 向下移动一个位置

    cursor.fetchmany(size=num) : 向下移动size指定数值位置

    cursor.fetchall() :游标移动到末尾

    例如:

import MySQLdb

if __name__ == "__main__":
    # create mysql connection
    connection = MySQLdb.connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="test")
    # get cursor 
    cursor = connection.cursor()
    # 返回执行结果数
    nums = cursor.execute("select * from user") 
    print(cursor.fetchone())
    print(cursor.fetchmany(size=1))
    print(cursor.fetchall())

    执行结果:

    (1L, 'admin')

    ((2L, 'wangzp'),)

    ((6L, 'wangzp12'), (5L, 'wangzp123'))

    根据结果可以发现,游标会移动,按照上述描述的规则。

    

    3.4.2 设置游标位置

    可以通过cursor.scroll(position, mode="relative | absolute")方法,来设置相对位置游标和绝对位置游标。

    方法参数描述:

    position : 游标位置

    mode : 游标位置的模式,relative:默认模式,相对当前位置;absolute:绝对位置

    例如:

    mode=relative, position=1;表示的是设置游标为当前位置+1的位置,即向下移动一个位置

    mode=absolute, position=2;将游标移动到索引为2的位置

    代码示例:

import MySQLdb

if __name__ == "__main__":
    # create mysql connection
    connection = MySQLdb.connect(host="127.0.0.1", port=3306, user="root", passwd="root", db="test")
    # get cursor 
    cursor = connection.cursor()
    # 返回执行结果数
    nums = cursor.execute("select * from user") 
    print(cursor.fetchone()) # 执行后,游标移动到索引位置为1
    cursor.scroll(1) # 相对游标移动模式,当前索引+1,即游标位置为2
    print(cursor.fetchmany(size=1)) # 因此获取第3个元素
    cursor.scroll(0, mode="absolute") # 绝对索引模式,将游标重置为0
    print(cursor.fetchall()) # 因此获取所有数据

    运行结果:

    (1L, 'admin')

    ((6L, 'wangzp12'),)

    ((1L, 'admin'), (2L, 'wangzp'), (6L, 'wangzp12'), (5L, 'wangzp123'))

    

    3.5 事务管理

    使用connection.commit()提交,connection.rollback()回滚。


    总结

    除了上述一些用法外,还有一些注入执行存储过程等方法,这里不做介绍,详情可以参考相关文档。其实用法相对还是比较简单的。一般开发可以分为如下步骤:

    1、建立数据库连接

    2、获取游标

    3、执行SQL

    4、如果sql是查询,那么使用fetch系列函数查询,但是需要注意的是游标的移动方式。

    如下列一个简单的封装代码(部分):

import MySQLdb

class DBUtil(object):
    
    @staticmethod
    def getConnection(host, port, user, passWord, db):
        "get mysql connection"
        connection = None
        try:
            connection = MySQLdb.connect(host=host, port=port, user=user, passwd=password, db=db)
        except MySQLdb.Error, e:
            print(e)
        return connection
        
    @staticmethod
    def getCursor(connection):
        "get cursor"
        cursor = None
        try:
            cursor = connection.cursor()
        except MySQLdb.Error, e:
            print(e)
        return cursor
        
    @staticmethod
    def update(cursor, sql, args):
        return cursor.execute(sql, args)
        
    @staticmethod
    def updateAndCommit(connection, cursor, sql, args):
        nums = cursor.execute(sql, args)
        connection.commit()
        return nums
    
    @staticmethod
    def updateBatch(cursor, sql, args):
        return cursor.executemany(sql, args)
        
    @staticmethod
    def updateBatchAndCommit(connection, cursor, sql, args):
        nums = cursor.executemany(sql, args)
        connection.commit()
        return nums
    
if __name__ == "__main__":
       
    connection = DBUtil.getConnection("127.0.0.1", 3306, "root", "root", "test")
    cursor = DBUtil.getCursor(connection)
    nums = cursor.execute("select * from user")
    print(cursor.fetchall())


您可能感兴趣的文档:

--结束END--

本文标题: python mysql模块

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

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

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

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

下载Word文档
猜你喜欢
  • python mysql模块
        多次使用python操作mysql数据库,先与大家分享一下,关于如何使用python操作mysql数据库。mysql并不是python自带的模块,因此需要下载安装。(在windows平台下介绍该使用过程)    1、下载/安装pyt...
    99+
    2023-01-31
    模块 python mysql
  • 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怎么调用MySQL模块
    Python怎么调用MySQL模块,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。调用MySQL  其实mysql模块有点类似于JDBC的一种角色,提供了访问数据库的一...
    99+
    2023-06-04
  • python模块之 aiomysql 异步mysql
    mysql安装教程 mysql语法大全 python 模块pymysql模块,连接mysql数据库 一、介绍 aiomysql 是一个基于 asyncio 的异步 MySQL 客户端库,用于在 Pyt...
    99+
    2023-09-26
    python mysql
  • mac下安装MySQL-python模块
    今天电脑重装系统,所有软件都重装一遍,MySQLdb模块一直装不好,纠结了好久,终于解决,方法分享给大家,还有python三大神器之一的virtualenv使用。MySQLdb模块安装:    1、下载MySQL-pyhon模块,网站为:h...
    99+
    2023-01-31
    模块 mac MySQL
  • 使用Python模块:struct模块
    Python没有提供直接的将用户定义的数据类型和文件IO关联起来的功能,但是它提供了struct库(是一个内置库)——我们可以以二进制模式来写这些数据(有趣的是,它真的是设计来讲文本数据写为缓存的) 1)bytes、str...
    99+
    2023-01-31
    模块 Python struct
  • python加密模块-hashlib模块
    hashlib模块 用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 (sha比md5 更复杂、md5 不能反解) 具体应用:用于网站防篡改。具...
    99+
    2023-01-31
    模块 python hashlib
  • python-模块
    一:模块的基本认识: 内置模块 内置模块是python自带的功能,在使用内置模块相应功能时,需要先导入再使用    第三方模块 下载-->安装-->使用 1.找到python所在的根目录-->再找到Scrip...
    99+
    2023-01-31
    模块 python
  • Python模块
    初步认识 安装完python后,python自带一部分模块,自带的模块又称作内置模块。其中一部分模块在路径Lib下。(这里的文件夹可以看做包,可以把多个模块放进一个包里) 从模块的来源来讲,可以分三种:内置模块、自定义模块(自己定义的)...
    99+
    2023-01-30
    模块 Python
  • python 模块
    python的模块分为2种:1.标准库(不需要安装,直接导入就可以使用的)2.第三方库(必须要手动安装的)先来介绍2个标准库:sys和os#!/usr/bin/env python# coding: utf-8...
    99+
    2023-01-30
    模块 python
  • python - 模块
    参考:https://www.cnblogs.com/nulige/p/6166205.html一、模块介绍Python Module(模块),就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。文件...
    99+
    2023-01-31
    模块 python
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • Python 安装mysql数据库模块
    方法一:命令行安装mysql模块 先找到Python安装目录下的Script文件 当前路径下进入cmd命令窗口,输入pip3 install pymysql  3.如上图所示就是安装成功  方法二:PyCharm下安装...
    99+
    2023-09-09
    数据库 python mysql
  • python常见模块之OS模块和time模块
    一、OS模块概述 Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 二、常用方法 三、OS模...
    99+
    2024-04-02
  • Python中的sys模块、random模块和math模块
    一、sys运行时环境模块 sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。 用法: sys.argv:命令行参数List,第...
    99+
    2024-04-02
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2024-04-02
  • Python模块学习之IPy模块
    IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第...
    99+
    2023-01-31
    模块 Python IPy
  • python数学模块(math/decimal模块)
    目录一, math模块2. math库常用函数3.math库使用示例二, decimal模块1. 什么时候使用decimal2. 使用decimal3. decimal使用示例一, ...
    99+
    2024-04-02
  • Python时间模块之datetime模块
    目录 简介 函数介绍及运用 date:日期类 1.获取当前时间  2.日期对象的属性 3.date类中时间和时间戳的转换: 4.修改日期使用replace方法  time:时间类  time类操作 datetime:日期时间类 timede...
    99+
    2023-09-12
    python datetime python 日期时间
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作