• python与MySQL


    一、python与mysql交互

    因版本不同python操作mysql有两个模块,python3不再支持MySQL-python,模块使用都一样:

    python2.7:MySQL-python

    python3:pymysql

    安装:

    pip install  Mysql-python

    pip install pymysql

    pymysql介绍:

    1.执行原生sql语句

    #!/usr/bin/env python3
    #_*_ coding:utf-8 _*_
    #Author:wd
    import pymysql
    conn=pymysql.connect(host='10.0.0.241',port=3307,user='stu',passwd='1234qwer',db='student')#创建连接
    cursor=conn.cursor()#创建游标
    try:
        #num=cursor.execute("create table student (name CHAR(20),age INT(3),date DAT )")#创建表不需要提交可以生效
        num=cursor.execute("insert into student value('wd',22,'1993-05-22')")#执行sql返回受影响的条目数
        print(num)
        conn.commit() #pymysql默认开启了事务,进行数据库更新需要提交
    except:
        conn.rollback()#出现异常则回滚
    cursor.close()#关闭游标
    conn.close()#关闭连接

    2.批量执行sql

    实际是循环调用execute

    def executemany(self, query, args):
    # type: (str, list) -> int
    #!/usr/bin/env python3
    #_*_ coding:utf-8 _*_
    #Author:wd
    import pymysql
    conn=pymysql.connect(host='10.0.0.241',port=3307,user='stu',passwd='1234qwer',db='student')#创建连接
    cursor=conn.cursor()#创建游标
    num=cursor.executemany("insert into student values(%s,%s,%s)",[('jack',22,'1993-01-11'),('tara',18,'1998-03-04')])
    #一次性执行操作多条,参数为
    print(num)#打印条结果条目
    conn.commit() #pymysql默认开启了事务,进行数据库更新需要提交
    new_id = cursor.lastrowid#如果是自增id,该方法可以获取到插入完成以后的ID
    print(new_id)
    cursor.close()#关闭游标
    conn.close()#关闭连接

    3.查询操作:fetch

    #!/usr/bin/env python3
    #_*_ coding:utf-8 _*_
    #Author:wd
    
    import pymysql
    conn=pymysql.connect(host='10.0.0.241',port=3307,user='stu',passwd='1234qwer',db='student')#创建连接
    cursor=conn.cursor()#创建游标
    cursor = conn.cursor()
    cursor.execute("select * from student")
    
    # 获取第一行数据
    row_1=cursor.fetchone()
    print(row_1)
    
    # 获取前n行数据
    row_2=cursor.fetchmany(3)
    print(row_2)
    # 获取所有数据
    # row_3=cursor.fetchall()
    cursor.scroll(0,mode='absolute')#将游标重新移至开始处
    row_new=cursor.fetchone()
    print(row_new)
    cursor.close()#关闭游标
    conn.close()#关闭连接

    TIPS:使用fetchone获取数据如同读取文件一样,如果读一行游标会下移一行,

    可以使用cursor.scroll(num,mode)来移动游标位置,如:

    • cursor.scroll(1,mode='relative')  # 相对当前位置移动
    • cursor.scroll(2,mode='absolute') # 相对绝对位置移动

    4.设置fetch获取数据类型

    默认使用fetch查询结果是tuple,我们还可以设置获取的数据返回时dict

    #!/usr/bin/env python3
    #_*_ coding:utf-8 _*_
    #Author:wd
    
    import pymysql
    
    conn = pymysql.connect(host='10.0.0.241', port=3307, user='stu', passwd='1234qwer', db='student')
    # 游标设置为字典类型
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)#设置游标类型为字典
    r = cursor.execute("select * from student")
    res = cursor.fetchone()
    print(res)
    cursor.close()
    conn.close()
    结果:
    {'name': 'wd', 'age': 22, 'date': datetime.date(1993, 5, 22)}
  • 相关阅读:
    使用JAXB来实现Java合xml之间的转换
    Kinect 骨骼映射---Let me dance for U!
    WebService学习笔记系列(四)
    PHP中出现BOM字符ufeff,PHP去掉诡异的BOM ufeff
    PHP中出现BOM字符ufeff,PHP去掉诡异的BOM ufeff
    WebService学习笔记系列(三)
    把QQ聊天记录插入数据库中
    如何使用SAP CRM Marketing Survey创建一个市场问卷调查
    为什么ABAP整型的1转成string之后,后面会多个空格
    如何用Chrome自带的截屏功能截取超过一个屏幕的网页
  • 原文地址:https://www.cnblogs.com/wdliu/p/6987067.html
Copyright © 2020-2023  润新知