zoukankan      html  css  js  c++  java
  • pymysql模块

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

    安装

    pip3 install pymysql

    使用

    import pymysql
    
    # 构造上下文
    config = {
        'host': '127.0.0.1',
        'port': 3306,
        'user': 'root',
        'password': 'mysql',
        'db': 'demo',
        'charset': 'utf8',
    }
    
    # 创建连接
    conn = pymysql.connect(**config)
    
    # 创建游标
    cursor = conn.cursor()
    
    # ————————————————————操作例子1————————————————————————
    # 执行SQL,并返回收影响行数
    effect_row = cursor.execute("insert into class (class_name) values ('五班')")
    print("受影响行数为:%s" % effect_row)
    
    # ————————————————————操作例子2————————————————————————
    cursor.execute("select * from class")
    # 获取第一行数据
    row_1 = cursor.fetchone()
    print(row_1)  # (1, '一班')
    # 获取前n行数据
    row_2 = cursor.fetchmany(3)
    print(row_2)  # ((2, '二班'), (3, '三班'), (4, '四班')),可以看到并不是从第一个位置开始查找,而是从上次查找位置开始的
    # 获取所有数据
    cursor.scroll(0, mode="absolute")  # 这个语句是用来给查询进行绝对定位的,由于其实位置是0,所有设置为0,这样下次查找又是从第一个开始查找。
    row_3 = cursor.fetchall()
    print(row_3)  # ((1, '一班'), (2, '二班'), (3, '三班'), (4, '四班'), (5, '五班'), (7, '五班'))
    
    # ————————————————————操作例子3————————————————————————
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 关于默认获取的数据是元祖类型,如果想要字典类型的数据,这样设置即可
    cursor.execute("select * from class")
    row_4 = cursor.fetchall()
    print(row_4)  # [{'id': 1, 'class_name': '一班'}, {'id': 2, 'class_name': '二班'}, {'id': 3, 'class_name': '三班'}, {'id': 4, 'class_name': '四班'}, {'id': 5, 'class_name': '五班'}, {'id': 7, 'class_name': '五班'}]
    
    # 提交,不然无法保存新建或者修改的数据
    conn.commit()
    
    # 关闭游标
    cursor.close()
    
    # 关闭连接
    conn.close()

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

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

    使用with简化连接过程

    import pymysql
    import contextlib
    #定义上下文管理器,连接后自动关闭连接
    @contextlib.contextmanager
    def mysql(host='127.0.0.1', port=3306, user='root', passwd='', db='User',charset='utf8'):
      conn = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db, charset=charset)
      cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
      try:
        yield cursor
      finally:
        conn.commit()
        cursor.close()
        conn.close()
     
    # 执行sql
    with mysql() as cursor:
      print(cursor)
      row_count = cursor.execute("select * from tb")
      row_1 = cursor.fetchone()
      print( row_count, row_1)
  • 相关阅读:
    Spring-3
    Spring-2
    Spring-1
    SpringMVC-视图解析器
    SpringMVC起步
    jsp中引用的jstl 和fmt标签-详解
    Spring-JDBCTemplate介绍
    Spring框架详解介绍-基本使用方法
    VIP邮箱有什么好处,北京外贸邮箱品牌原来这个最好用?
    网易企业邮箱申请,申请企业邮箱流程分享~
  • 原文地址:https://www.cnblogs.com/kuxingseng95/p/9547377.html
Copyright © 2011-2022 走看看