• Python 操作Mysql



    活动地址:CSDN21天学习挑战赛

    1.Pymsql 介绍

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。

    1.1 python安装pymsql模块

    在这里插入图片描述

    PIP 是 Python 包或模块的包管理器。

    **注释:**如果您使用的是 Python 3.4 或更高版本,则默认情况下会包含 PIP
    在这里插入图片描述

    普通安装 :
    pip install PyMySQL
    在这里插入图片描述
    卸载已安装的库:
    pip uninstall PyMySQL
    在这里插入图片描述
    列出已安装的库:

    pip list

    1.2 Python操作mysql

    1.导入pymysql模块 : import pymysql
    2.使用connect() 函数来创建连接对象
         *host :连接的mysq|主机,如果本机是'localhost'
         *port : 连接的mysq|主机的端口, 默认是3306
         *database :数据库的名称
         *user :连接的用户名
         *password :连接的密码
         *charset :通信采用的编码方式,推荐使用utf8
    
    3.连接对象操作说明
         conn.close() : 关闭连接
         conn. commit() :提交数据
         conn.rollback() : 撤销数据
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    代码:

    import pymysql  # 连接mysql数据库的模块
    
    # 1.连接数据库
    """
    需要传入的参数:
      host=None,
      user=None,
      password="",
      database=None,
      port=0,
      charset='',
      autocommit=True
    """
    client = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        password="123",
        database="test",
        charset='utf8',  # 一定不要写utf-8
        # 针对增删改操作,执行重要程度高,若要执行,必须要有一步确认的操作,autocommit=True默认对数据库进行增删改操作时自动提交至数据库;若此处不写,在下面代码 cursor_obj.execute(sql) 后面手动需要添加 client.commit()操作
        autocommit=True
    )
    # print(client)  # 打印结果:
    
    
    # 2.获取游标对象。游标:可以用来提交sql命令
    # pymysql.cursors.DictCursor:将查询出来的结果制作成字典的形式返回
    cursor_obj = client.cursor(pymysql.cursors.DictCursor)
    
    # 3.通过execute可以提交sql语句(增删改查都可以,可以使用try来捕获异常)
    try:
        # 1.1)查数据
        sql = "select * from books"  # 不用写分号
    
        # 1.2)插入数据
        # sql = "insert into student(id, name, sex, birthday, class) values('110', '张芳', '男', '1946', '95030')"  # 不用写分号
    
        # 2)提交sql语句
        res = cursor_obj.execute(sql)
        # print(res)  # execute返回的是当前sql语句所影响的行数
        # client.commit()  # 上面连接数据库的代码处已写了autocommit=True,此处注释掉
    
        # 3.1)提交后,通过cursor_obj对象.fetchall()  获取所有查询到的结果
        data = cursor_obj.fetchall()
        for i in data:
            print(i)
    
        # 3.2).fetchone()  只获取查询结果中的一条
        # print(cursor_obj.fetchone())
    
        # 3.3).fetchmany() 可以指定获取几条数据
        # print(cursor_obj.fetchmany(4))  # 获取四条数据
    
    except Exception as e:
        print(e)
    
    # 关闭游标
    cursor_obj.close()
    # 关闭客户端连接
    client.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    2.数据库

    DBMS

    mysql -RDBMS 关系型

    2.1 数据库分类

    关系型:mysql\oracle\sqlserver\access
    非关系型:redis,mongodb...
    
    • 1
    • 2

    2.2 修改密码

    mysql>set password for root@'127.0.0.1' =password('666')
    mysqladmin -uroot -p老密码 password 新密码;
    mysql>update user set password=password('66') where user='root';
    
    • 1
    • 2
    • 3

    2.3 库操作

    创建库:
    	create database 库名 charset='utf8';
    连接库
    	use 库名
    查询库
    	show databases;
    	show create database 库名  (查看库的详细创建语句)
    删库
    	drop database 库名;
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.4 表操作

    创建:
    	create table 表名(
    		字段1名 类型(宽度) 约束条件,
    		字段2名 类型(宽度) 约束条件
    	);
    
    删除
    	drop table 表名;
    查看表
    	show create table 表名;  #表信息竖向展示
    	show create table 表名\G
    	show tables;
    	select * from userinfo\G  #表信息竖向展示
    
    清空表
    	truncate 表名;    清空表,自增重置
    	delete from 表名; 清空表
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

  • 相关阅读:
    小程序商品列表分页实现
    低蓝光认证:TUV莱茵与TUV南德 有啥区别?
    即时通讯赛道开打信创牌,WorkPlus为何独树一帜?
    [C++] C++标准库中的string类的使用(上)、
    技术贴 | Rocksdb 中 Memtable 源码解析
    React魔法堂:echarts-for-react源码略读
    分库分表系列:分库分表的前世今生
    android崩溃系列-崩溃原理分析
    【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
    记录一个删库跑路的技巧(如何快速删除数据库下面的所有表)
  • 原文地址:https://blog.csdn.net/u014096024/article/details/126229347