P数据库操作基础.py

前言:在当今数据驱动的时代,与数据库交互是许多应用程序开发的核心部分。 

目录

一、MySQL 基础:先打地基,才能建高楼

(一)数据库是啥?

(二)表又是啥?

(三)常见的 MySQL 数据类型

(四)简单的数据库操作命令

二、pymysql 登场:让 Python 和 MySQL “勾搭” 起来

(一)为啥要用 pymysql?

(二)pymysql 核心操作

三、敲开数据库大门 —— 连接数据库

四、搞点 “大动作” —— 创建数据库和表

五、往 “小窝” 塞宝贝 —— 插入数据

六、瞅瞅 “宝贝” —— 查询数据

七、给 “宝贝” 美容 —— 更新数据

八、给 “宝贝” 大扫除 —— 删除数据

九、最后的 “收尾工作” —— 关闭数据库连接


一、MySQL 基础:先打地基,才能建高楼

在开始用 pymysql 玩转 MySQL 前,咱得先了解点 MySQL 的基础,这就好比盖房子前得先把地基打牢。

(一)数据库是啥?

数据库,简单来说就是个 “大仓库”,能帮咱把各种信息整整齐齐地存起来,想用的时候随时拿。就好比你把玩具都放进玩具箱,找起来方便多了。

(二)表又是啥?

表?就是这大仓库里的 “小隔间”。不同的小隔间放不同的玩意儿,比如一个隔间放玩具,一个放书。在数据库里,一个表通常存一类相关的信息,像一个表存用户信息,一个表存订单信息。

(三)常见的 MySQL 数据类型

  1. 整数类型(INT) :就如同数数用的数字,1、2、3 这样。用它来存年龄、数量这些整数再合适不过啦。

  2. 字符串类型(VARCHAR) :这可是个 “万能宝贝”,能存字母、数字、汉字等各种字符组合,像姓名、地址这些信息,用它准没错。

  3. 日期类型(DATE) :专门用来存日期,像生日、纪念日啥的,用它来存特方便,而且查询起来也容易。

(四)简单的数据库操作命令

  1. 创建数据库CREATE DATABASE 数据库名; 就像说 “给我整一个叫 XX 的大仓库”。

  2. 查看所有数据库SHOW DATABASES; 就像把仓库清单拿出来瞅瞅,看看都有啥仓库。

  3. 创建表CREATE TABLE 表名 (字段名 数据类型,...); 就像在仓库里定做小隔间,得说好隔间里每个位置放啥类型的东西,比如一个位置放名字(用 VARCHAR),一个位置放年龄(用 INT)。

  4. 插入数据INSERT INTO 表名 (字段 1,字段 2,...) VALUES (值 1,值 2,...); 就像往小隔间里放宝贝,把对应的信息放到对应的格子里。

  5. 查询数据SELECT * FROM 表名; 就是把小隔间里的所有宝贝都掏出来瞅瞅,要是只瞅某个特定宝贝,可以用 SELECT 字段名 FROM 表名 WHERE 条件;

  6. 更新数据UPDATE 表名 SET 字段名 = 新值 WHERE 条件; 就像把小隔间里某个宝贝给换了个模样。

  7. 删除数据DELETE FROM 表名 WHERE 条件; 就像把小隔间里某个不要的宝贝直接扔掉。

二、pymysql 登场:让 Python 和 MySQL “勾搭” 起来

了解了 MySQL 基础,咱就引入 pymysql,这可是让 Python 和 MySQL 能愉快 “聊天” 的关键角色。

(一)为啥要用 pymysql?

要是手动在命令行里一条条敲 MySQL 命令,那得多累啊,而且要是写个程序,还得一个个去操作,这效率得多低下。pymysql 就像个 “翻译官”,在 Python 里头,通过简单的代码就能让 Python 和 MySQL 数据库交流,把刚才那些操作都变得简单快捷。

(二)pymysql 核心操作

  1. 连接数据库 :得先把 Python 和 MySQL 数据库连上啊,不然俩压根 “说不上话”。

    • pymysql.connect() :这就是用来建立连接的,得把数据库的地址、用户名、密码啥的都传进去,就像给 “翻译官” 说好要去找哪个数据库玩。

  2. 创建游标connection.cursor() ,有了连接后,这游标就好比是 “小跟班”,专门帮咱执行 SQL 命令。

  3. 执行 SQL 命令cursor.execute() ,把刚才学的那些 MySQL 命令,像 CREATE DATABASEINSERT INTO 这些,丢进去让它执行。

  4. 提交事务connection.commit() ,要是执行了插入、更新、删除这些操作,得用这玩意儿,不然刚才的操作都白搭,数据库里头一点变化都没有。

  5. 关闭连接connection.close() ,用完了得关掉连接,不然数据库那边一直开着 “通道”,多浪费资源啊。

三、敲开数据库大门 —— 连接数据库

好啦,环境弄好了,咱就正式开始和数据库 “交朋友” 啦!

import pymysql

# 连接到MySQL数据库
connection = pymysql.connect(
    host='localhost',  # 数据库服务器地址,本地就是localhost
    user='你的用户名',  # 用户名
    password='你的密码',  # 对应的密码
    charset='utf8mb4',  # 设置字符编码,支持各种有趣的字符
    cursorclass=pymysql.cursors.DictCursor  # 让查询结果像字典一样好用
)

上面这段代码就是连接数据库的关键啦。connection 就像是一座桥,把你的 Python 程序和 MySQL 数据库给连起来了。要是连都不连,那后面的操作不都白搭嘛!

四、搞点 “大动作” —— 创建数据库和表

连上数据库了,咱得干点实在的,先整俩 “小窝” —— 数据库和表。 

try:
    # 创建数据库
    with connection.cursor() as cursor:
        # 执行SQL语句:创建名为 '我的数据库' 的数据库,不存在就创建,存在就凑合用
        cursor.execute("CREATE DATABASE IF NOT EXISTS `我的数据库`")
        # 显示当前所有数据库,瞅瞅新建的那个在不在
        cursor.execute("SHOW DATABASES")
        # 打印所有数据库名称,就像拆盲盒,看看都有啥
        for db in cursor:
            print(db['Database'])

这不,咱就创建了个叫 “我的数据库” 的数据库。IF NOT EXISTS 就是说,要是已经有了,咱也不折腾,将就用呗。接着用SHOW DATABASES瞅瞅都有啥数据库,就像打开宝藏箱,看看都有啥宝贝。

    # 创建表,把数据库当仓库,表就是里面的小隔间
    with connection.cursor() as cursor:
        # 选择 '我的数据库' 数据库,得先进去才能整表
        cursor.execute("USE `我的数据库`")
        # 创建 '我的表' 表,得想想表里得放啥玩意儿
        cursor.execute("""
            CREATE TABLE IF NOT EXISTS `我的表` (
                id INT PRIMARY KEY AUTO_INCREMENT,  # 编号,自动增长,省得咱手动写
                姓名 VARCHAR(255),  # 放姓名,能写好多字
                年龄 INT  # 放年龄,整数
            )
        """)
        # 显示表结构,就像看看小隔间长啥样
        cursor.execute("DESCRIBE `我的表`")
        # 打印表的列信息,瞅瞅都有啥字段
        for col in cursor:
            print(col)

接着,咱进入新建的数据库,创建了个 “我的表”,里面有个自动增长的 id,还有姓名和年龄两个字段,这不就把咱想存的个人信息都涵盖啦?

五、往 “小窝” 塞宝贝 —— 插入数据

有了表,咱得往里面塞点数据,不然空空如也多无聊。

    # 插入数据
    with connection.cursor() as cursor:
        # 插入单条数据,就像往隔间放个小玩具
        cursor.execute(
            "INSERT INTO `我的表` (姓名, 年龄) VALUES (%s, %s)",
            ('张三', 20)
        )
        # 插入多条数据,一次性多放几个,效率高
        cursor.executemany(
            "INSERT INTO `我的表` (姓名, 年龄) VALUES (%s, %s)",
            [
                ('李四', 25),
                ('王五', 30)
            ]
        )
        # 提交事务,就像把放进去的宝贝摆好,不然就白搭啦
        connection.commit()

咱先插入一条张三的数据试试水,然后一次性又塞进去李四和王五的数据。commit() 就像最后确认摆好啦,不然前面的努力都白费。

六、瞅瞅 “宝贝” —— 查询数据

塞进去数据了,得瞅瞅对不对吧,这就得用查询。

    # 查询数据
    with connection.cursor() as cursor:
        # 查询所有数据,就像把小隔间里的宝贝全倒出来瞅瞅
        cursor.execute("SELECT * FROM `我的表`")
        # 获取所有查询结果,这下能好好欣赏啦
        results = cursor.fetchall()
        print("所有记录:")
        for row in results:
            print(row)

SELECT * FROM 就是把表里的所有数据都捞出来,fetchall() 就像把捞出来的数据全放到一个大盘子里,方便咱一一对比查看。

七、给 “宝贝” 美容 —— 更新数据

瞅着瞅着,发现某个数据不对劲,这得改改,就像给宝贝美容。 

    # 更新数据
    with connection.cursor() as cursor:
        # 更新数据,把年龄不对的给改过来
        cursor.execute(
            "UPDATE `我的表` SET 年龄 = %s WHERE 姓名 = %s",
            (22, '张三')
        )
        # 提交事务,让更改生效,不然还是旧模样
        connection.commit()

把张三的年龄从 20 改成 22,UPDATE 就像给数据换个新衣服,WHERE 就是精准定位要改的那个。

八、给 “宝贝” 大扫除 —— 删除数据

要是觉得某个数据没啥用了,就像大扫除一样给它清理掉。

    # 删除数据
    with connection.cursor() as cursor:
        # 删除数据,把多余的给扔了
        cursor.execute(
            "DELETE FROM `我的表` WHERE 姓名 = %s",
            ('李四',)
        )
        # 提交事务,让删除生效,不然还在里面占地方
        connection.commit()

把李四这条数据删掉,DELETE 就像把不要的宝贝直接扔垃圾桶。

九、最后的 “收尾工作” —— 关闭数据库连接

玩得差不多了,得干最后的收尾工作,把数据库连接关了。

finally:
    # 关闭数据库连接,就像用完玩具要收拾好
    connection.close()

 在 finally 块里调用 connection.close(),不管前面操作咋样,都得把连接关好,不然就像玩具没收拾,容易丢,还占地方。

宝子们,是不是感觉超有趣?这下用 pymysql 玩转 MySQL 数据库是不是简单得很?快去试试吧,要是有啥问题,咱再一起琢磨琢磨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值