zoukankan      html  css  js  c++  java
  • pymsql数据库查询操作

    在python 中,pymsql属于第三方模块,需要下载,在windows下,打开cmd命令窗口,输入pip install pymysql即可安装成功
    安装成功后,在pycharm中import mysql引入模块,就可以使用模块中的类和方法了
    操作步骤
    1.连接数据库,创建一个数据库对象
    2.开启游标功能,创建游标对象
    3.使用execute()方法,执行SQL语句,当开启游标功能执行这个SQL语句后,系统并不会将结果直接打印到频幕上,而是将上述得到的结果,找个地方存储起来,提供一个游标接口给我们,当你需要获取数据 的时候,就可以从中拿数据。
    4.使用fetchone()或fetchall()获取数据
    5.断开数据库,释放资源
    数据库的连接和简单的使用,先上代码:
    import pymysql
    连接测试数据库
    cnn = pymysql.connect(host = "47.111.99.109",port = 13306,user = "root",password = "root",database = "k12_product",charset = "utf8")
    创建游标
    cou = cnn.cursor(cursor=pymysql.cursors.DictCursor)
    数据默认以元组方式返回数据,加上cursor属性,设置为pymysql.cursors.DictCursor,结果会返回字典
    sql = "select * from k_class limit 10;"
    执行sql,打印结果
    cou.execute(sql)
    new = cou.fetchmany(3) 批量获取三条数据
    for i in new:
    print(i)

    关闭连接
    cnn.close()

    方法说明
    execute(query,args=None)
    函数作用:执行单条的sql语句,执行成功后返回受影响的行数
    参数说明:
    query:要执行的sql语句,字符串类型
    args:可选的序列或映射,用于query的参数值。如果args为序列,query中必须使用%s做占位符;如果args为映射,query中必须使用%(key)s做占位符

    executemany(query,args=None)
    函数作用:批量执行sql语句,比如批量插入数据,执行成功后返回受影响的行数
    参数说明:
    query:要执行的sql语句,字符串类型
    args:嵌套的序列或映射,用于query的参数值

    使用execute()函数得到的只是受影响的行数,并不能真正拿到查询的内容。cursor对象还提供了3种提取数据的方法:fetchone、fetchmany、fetchall.。每个方法都会导致游标动,所以必须注意游标的位置。
    cursor.fetchone():获取游标所在处的一行数据,返回元组,没有返回None
    cursor.fetchmany(size):接受size行返回结果行。如果size大于返回的结果行的数量,则会返回cursor.arraysize条数据。
    cursor. fetchall():接收全部的返回结果行。
    注意:从execute()函数的查询结果中取数据,以元组的形式返回游标所在处的一条数据,如果游标所在处没有数据,将返回空元组,该数据执行一次,游标向下移动一个位置。fetchone()函数必须跟exceute()函数结合使用,并且在exceute()函数之后使用

    从exceute()函数结果中获取游标所在处的size条数据,并以元组的形式返回,元组的每一个元素都也是一个由一行数据组成的元组,如果size大于有效的结果行数,将会返回cursor.arraysize条数据,但如果游标所在处没有数据,将返回空元组。查询几条数据,游标将会向下移动几个位置。fetmany()函数必须跟exceute()函数结合使用,并且在exceute()函数之后使用

    fetchall()获取游标所在处开始及以下所有的数据,并以元组的形式返回,元组的每一个元素都也是一个由一行数据组成的元组,如果游标所在处没有数据,将返回空元组。执行完这个方法后,游标将移动到数据库表的最后

    指定指针位置
    在获取行数据的时候,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能再获取到行的内容,所以我们可以使用如下方法来移动行指针:
    cursor.scroll(1,mode='relative') 相对当前位置移动
    cursor.scroll(2,mode='absolute') 相对绝对位置移动
    第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动

    with上下文操作管理器
    在python的文件操作中支持上下文管理器,在操作数据库的时候也可以使用:
    import pymysql
    config={
    "host":"127.0.0.1",
    "user":"root",
    "password":"LBLB1212@@",
    "database":"dbforpymysql"
    }
    db = pymysql.connect(**config)
    with db.cursor(cursor=pymysql.cursors.DictCursor) as cursor: 获取数据库连接的对象
    sql = "SELECT * FROM userinfo"
    cursor.execute(sql)
    res = cursor.fetchone()
    print(res)
    cursor.scroll(2,mode='relative')
    res = cursor.fetchone()
    print(res)
    cursor.close()
    db.close()

  • 相关阅读:
    sqlserver建立临时表
    动态引用WebService
    技术的力量:30分钟的动画片和《彗星撞地球》超炫的动画 仅64K
    sqlserver2005新功能函数
    使用面向对象的、完整的单点登录功能
    asp.net上传功能(单文件,多文件,自定义生成缩略图,水印)
    C#对字符和文件的加密解密类
    JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)
    JavaScript表格隔行换色悬停高亮
    Javascript模拟c#中arraylist操作(学习分享)
  • 原文地址:https://www.cnblogs.com/sayi2020/p/13909428.html
Copyright © 2011-2022 走看看