python中MySQL数据的增删改查操作

  1. 删除数据
    表结构:
    [root@localhost ~]# mysql -uroot -ppzk123 -e "use test; desc t1;"
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | NO   | PRI | NULL    |       |
    | name  | varchar(10) | NO   |     | NULL    |       |
    | age   | int(11)     | NO   |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    增加数据
    #!/usr/bin/env python
    import MySQLdb
    
    def connect_mysql():
        db_config = {
            'host': '127.0.0.1',
            'port': 3306,
            'user': 'root',
            'passwd': 'pzk123',
            'db': 'test'
        }
        c = MySQLdb.connect(**db_config)
        return c
    
    if __name__ == '__main__':
        c = connect_mysql()
        cus = c.cursor()
        sql = '''insert into t1 values
                (1, 'Tom', 17),
                (2, 'John', 25),
                (3, 'Jeny', 25);
        '''
        try:
            cus.execute(sql)
            c.commit()
        except Exception as e:
            c.rollback()
            raise e
        finally:
            c.close()
    删除数据
    #!/usr/bin/env python
    import MySQLdb
    
    def connect_mysql():
        db_config = {
            'host': '127.0.0.1',
            'port': 3306,
            'user': 'root',
            'passwd': 'pzk123',
            'db': 'test'
        }
        c = MySQLdb.connect(**db_config)
        return c
    
    if __name__ == '__main__':
        c = connect_mysql()
        cus = c.cursor()
        sql = 'delete from t1 where id=2;'
        try:
            cus.execute(sql)
            c.commit()
        except Exception as e:
            c.rollback()
            raise e
        finally:
            c.close()

  2. 更改数据
    把 John 的年龄修改为20
    #!/usr/bin/env python
    import MySQLdb
    
    def connect_mysql():
        db_config = {
            'host': '127.0.0.1',
            'port': 3306,
            'user': 'root',
            'passwd': 'pzk123',
            'db': 'test'
        }
        c = MySQLdb.connect(**db_config)
        return c
    
    if __name__ == '__main__':
        c = connect_mysql()
        cus = c.cursor()
        sql = 'update t1 set age=20 where id=2;'
        try:
            cus.execute(sql)
            c.commit()
        except Exception as e:
            c.rollback()
            raise e
        finally:
            c.close()

  3. 索引
    索引就像书的目录一样,也可以理解是一个标签,创建索引的目录是为了加快我们对数据的查询,举个例子,数据库中有两万条记录,现在要查询 id 为 10086 的记录,如果没有索引,必须遍历整个表,直到 id 等于 10086 这一行被找到为止,如果在 id 字段上创建索引,MySQL 不需要任何扫描,直接在索引里面找 10086 就可以得知这一行的位置,可见,创建索引可以提高数据库的查询速度。
    索引分类:
    普通索引:允许在定义索引的列中插入重复值和空值
    唯一索引:索引列的值必须唯一,但允许有空值
    单列索引:即一个索引只包含单个列,一个表可以有多个单列索引
    组合索引:即在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用
    全文索引:在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值
    空间索引:是对空间数据类型的字段建立的索引,MySQL 有四中空间数据类型,分别是 GEOMETRY 、POINT 、LINESTRING 、POLYGON
    索引设计原则
    索引不宜过多,否则不仅占用磁盘空间,而且会影响插入、删除、更新语句的性能
    避免对经常更新的表进行过多的索引,并且索引中的列尽可能少
    数据量小的表最好不要使用索引,因为查询花费的时间可能比遍历索引的时间还要短,索引不会产生太大效果
    在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引
    当唯一性是某种数据本身的特征时,指定唯一索引以确保数据完整性,提高查询速度
    在频繁进行排序或分组的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Python操作MySQL增删改查示例代码: 首先需要安装MySQL相关库,使用pip命令安装pymysql库即可: ``` pip install pymysql ``` 接下来是示例代码,假设我们要操作数据库名为test,其包含一张名为user的表,表包含id、name、age三个字段: ```python import pymysql # 连接MySQL数据库 conn = pymysql.connect( host='localhost', port=3306, user='root', password='123456', database='test' ) # 插入数据 def insert(): try: with conn.cursor() as cursor: sql = "INSERT INTO user (name, age) VALUES (%s, %s)" cursor.execute(sql, ('Tom', 20)) conn.commit() print('插入成功') except Exception as e: print(f'插入失败,错误信息:{e}') # 查询数据 def select(): with conn.cursor() as cursor: sql = "SELECT * FROM user" cursor.execute(sql) results = cursor.fetchall() for row in results: id = row[0] name = row[1] age = row[2] print(f'id={id}, name={name}, age={age}') # 更新数据 def update(): try: with conn.cursor() as cursor: sql = "UPDATE user SET age=%s WHERE name=%s" cursor.execute(sql, (25, 'Tom')) conn.commit() print('更新成功') except Exception as e: print(f'更新失败,错误信息:{e}') # 删除数据 def delete(): try: with conn.cursor() as cursor: sql = "DELETE FROM user WHERE name=%s" cursor.execute(sql, ('Tom',)) conn.commit() print('删除成功') except Exception as e: print(f'删除失败,错误信息:{e}') # 关闭数据库连接 conn.close() ``` 以上代码,insert函数实现了向user表插入一条数据,select函数实现了查询user表所有数据并输出,update函数实现了将名为Tom的记录的age字段更新为25,delete函数实现了删除名为Tom的记录。 需要注意的是,每次执行完操作后都需要调用commit方法提交事务。另外,使用完数据库连接后一定要记得关闭,否则会导致资源浪费和连接池溢出等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值