python 操作mysql

python 操作mysql

  1. 需要安装PyMySql

    1. 打开控制台,输入:pip install pymysql
  2. 新建一个库srp和表user():

    1. create database srp;
      use srp;
      create table user
      (
          uId           int auto_increment comment '用户id'
              primary key,
          uName         varchar(20)  not null comment '用户姓名',
          uStuNumber    varchar(15)  not null comment '学号',
          uSex          varchar(1)   not null comment 'm:男,f:女',
          uCollege      varchar(20)  not null comment '学院',
          uCurrentMajor varchar(20)  not null comment '专业',
          uEnrolTime    datetime     not null comment '入学时间',
          phone         varchar(19)  not null comment '手机号',
          qq            varchar(20)  not null comment 'qq号',
          uPassword     varchar(20)  not null comment '密码',
          uPhoto        varchar(255) null
      );
      
    2. 然后自己随便插入几条数据,基本工作已经完成了。
  3. 我们首先对pymysql.connect几个参数需要了解一下(这里只挑几个重要的了解一下)

    def __init__(
        self,
        *,
        user=None,  # The first four arguments is based on DB-API 2.0 recommendation.用户名
        password="",	#密码
        host=None,		#主机名
        database=None,	#数据库名
        unix_socket=None,	#使用unix套接字
        port=0,			#端口号
        charset="",		#字符集
        sql_mode=None,	#sql 模式
        read_default_file=None,
        conv=None,
        use_unicode=True,
        client_flag=0,
        cursorclass=Cursor,
        init_command=None,
        connect_timeout=10,
        read_default_group=None,
        autocommit=False,
        local_infile=False,
        max_allowed_packet=16 * 1024 * 1024,
        defer_connect=False,
        auth_plugin_map=None,
        read_timeout=None,
        write_timeout=None,
        bind_address=None,
        binary_prefix=False,
        program_name=None,
        server_public_key=None,
        ssl=None,
        ssl_ca=None,
        ssl_cert=None,
        ssl_disabled=None,
        ssl_key=None,
        ssl_verify_cert=None,
        ssl_verify_identity=None,
        compress=None,  # not supported
        named_pipe=None,  # not supported
        passwd=None,  # deprecated	
        db=None,  # deprecated		
    ):
    
  4. connect的部分方法

    begin()	#开始事务
    commit() #提交事务
    cursor() #创建游标
    rollback() #事务回滚操作
    close() #关闭操作
    
  5. cursor(游标)常用方法

    excure()	#执行单行语句
    fetchone()	#获取第一行
    fetchmany(size)	#获取size行
    fetchall()	#获取所有的行
    close()		#关闭
    
  6. python连接mysql库srp

    import pymysql
    
    # mysql连接
    db = pymysql.connect(
       host="localhost",  # IP地址
       port=3306,  # 端口号
       user="root",  # 用户名
       password="",  # 密码
       db="srp",  # 数据库名
       charset="utf8"  # 字符集编码 
    )
    print(db)
    
  7. 查询操作:

    1. 查询所有数据(*)

      # 创建一个mysql游标对象
      '''
         什么事游标?游标就是mysql检索操作返回的一组结果集,类似于java中的resultSet
         游标是只读的,不可以被修改
      '''
      # 使用cursor()方法创建一个游标对象 cursor
      cursor = db.cursor()
      
      # 使用游标的execute()方法执行SQL查询
      sql = "select uId,uName,uSex,uCollege from user"
      cursor.execute(sql)	# 执行sql语句
      result = cursor.fetchall()	#类似java 的ResultSet一样,接受返回的结果集,不过这里接受的是所有fetchall(),主要返回结果集是两个嵌套的元组。里面的每一个元组是每一行的小集合。
      
      try:
         for row in result:	#按照名字与元组下标相对齐
         uId = row[0] 
         uName = row[1]
         uSex = row[2]
         uCollege = row[3]
         print(str(uId) + '\t' + str(uName) + '\t' + str(uSex) + '\t' + str(uCollege))
      except Exception as e:
      print(e)   
      finally:
      # 注意关闭游标和数据库
         cursor.close()
         db.close()
      

      image

    2. 携带where条件查询单条数据

      cursor = db.cursor()
      sql = "select uId,uName,uSex,uCollege from user where uSex='男' limit 2 offset 1"
      cursor.execute(sql)
      results = cursor.fetchall()
      
      try:
          for row in results:
              uId = row[0]
              uName = row[1]
              uSex = row[2]
              uCollege = row[3]
              print(str(uId) + '\t' + str(uName) + '\t' + str(uSex) + '\t' + str(uCollege))
      except Exception as e:
          print(e)
      finally:
          cursor.close()
      	db.close()
      

      image

    3. insert插入操作

      cursor = db.cursor()
      # 使用游标的execute()方法执行SQL查询
      sql = "insert into user(uId,uName,uSex,uCollege) values ('7','竹风','男','信科院')"
      
      try:
         db.begin()
         cursor.execute(sql)
         db.commit()
         print("插入成功")
      except Exception as e:
         print(e)
         db.rollback()
      finally:
         cursor.close()
         db.close()
      

      image

      image

      ​ 插入成功。

    4. 更新操作

      cursor = db.cursor()
      sql = "update user set uName='竹露' where uId='7'"
      
      try:
         db.begin()
         cursor.execute(sql)
         db.commit()
         print("更新成功")
      except Exception as e:
         print(e)
         db.rollback()
      finally:
         cursor.close()
         db.close()
      

      image

      image

    5. 删除

      cursor = db.cursor()
      sql = "delete from user where uId='7'"
      
      try:
          db.begin()
          cursor.execute(sql)
          db.commit()
          print("删除成功")
      except Exception as e:
          print(e)
          db.rollback()
      finally:
          cursor.close()
          db.close()
      

      image

      image

pytoon操作数据库其实比较是简单的,这里面注意的是每一次的事务或者查询完成都要关闭游标和数据库连接。还有就是数据库的修改,添加,删除都会涉及到事务的操作,一定要注意这种情况,避免代码跑完但是数据库数据没有更新的情况。

posted @ 2021-08-25 17:10  LilyFlower  阅读(1632)  评论(0编辑  收藏  举报