当前位置:

首页 > 编程开发 > 使用Python连接MySQL数据库的步骤和方法详解

使用Python连接MySQL数据库的步骤和方法详解

一、表格与键概念主键:可唯一表示该资料(可以设置多个列表为主键)设置外键进行表与表的相连,且外键必须是其他表的主键(外键也可以设置自己表格的主键)二、创建资料库CREATEDATABASE`sql_tutorial`;--创建资料库SHOWdatabases;--展示资料库dropdatabase`sql_tutorial`;--删除资料库–为注释;为结束命令的格式三、创建表格MySQL的资料形态:INT--整形DECIMAL(m,n)--有小数点的数(3,2)则是2.33,总共有m位数,小数

本文目录

    一、表格与键概念

    使用Python连接MySQL数据库的步骤和方法详解

    使用Python连接MySQL数据库的步骤和方法详解

    使用Python连接MySQL数据库的步骤和方法详解

    主键:可唯一表示该资料(可以设置多个列表为主键)

    使用Python连接MySQL数据库的步骤和方法详解

    设置外键进行表与表的相连,且外键必须是其他表的主键(外键也可以设置自己表格的主键)

    二、创建资料库

    CREATE DATABASE `sql_tutorial`;    --创建资料库
    SHOW databases;    --展示资料库
    drop database `sql_tutorial`;    --删除资料库

    –为注释
    ;为结束命令的格式

    使用Python连接MySQL数据库的步骤和方法详解

    三、创建表格

    MySQL的资料形态:

    • INT --整形

    • DECIMAL(m,n) --有小数点的数 (3,2)则是2.33,总共有m位数,小数点站n位

    • VARCHAR(n) --字串

    • BLOB --图片 影片 档案…(二进制的资料)

    • DATE --日期(yyyy-mm-dd)

    • TIMESTAMP --记录时间(yyyy-mm-dd hh:mm:ss)

    CREATE DATABASE `sql_tutorial`;  -- 创建资料库
    SHOW databases;        -- 展示资料库
    use `sql_tutorial`; -- 选择使用的资料库
    
    create table student(
            `student_id` int primary key, -- 第一列
        `name` varchar(20), -- 第二列
        `major` varchar(20) -- 第三列,20指的是最大字符长度
    ); -- 创建表格并设计属性
    
    describe `student`; -- 展示表格
    drop table `student`; -- 删除表格
    
    alter table `student` add gpa decimal(3,2); -- 增加资料属性
    alter table `student` drop column gpa ; -- 删除资料属性

    使用Python连接MySQL数据库的步骤和方法详解

    四、储存资料

    create table student(
            `student_id` int primary key, -- 第一列
        `name` varchar(20), -- 第二列
        `major` varchar(20) -- 第三列,20指的是最大字符长度
    ); -- 创建表格并设计属性
    select * from `student`; -- 搜索表格的全部资料
    
    insert into `student` values(1,'小白','历史'); -- 写入表格数据
    insert into `student` values(2,'小黑','生物'); -- 写入表格数据
    insert into `student` values(3,'小绿',null); -- 写入表格数据,null为空
    
    insert into `student`(`name`,`major`,`student_id`) values('小蓝','英语','4'); -- 按照设置写入表格数据
    insert into `student`(`major`,`student_id`) values('英语','5'); -- 按照设置写入表格数据,没有的数据则为空白null

    使用Python连接MySQL数据库的步骤和方法详解

    五、限制约束

    create table student(
            `student_id` int primary key, -- 第一列
        `name` varchar(20) not null, -- 第二列,not null指这个属性不可以为空
        `major` varchar(20) unique -- 第三列,20指的是最大字符长度,unique指每个值不可以重复
    ); -- 创建表格并设计属性
    
    create table student(
            `student_id` int primary key auto_increment, -- 第一列,auto_increment自动会加一
        `name` varchar(20), -- 第二列,not null指这个属性不可以为空
        `major` varchar(20) default '历史' -- 第三列,20指的是最大字符长度,default指预设值,如果没有写该属性,则为预设值
    ); -- 创建表格并设计属性
    drop table `student`;
    select * from `student`; -- 搜索表格的全部资料
    
    insert into `student`(`name`,`major`) values('小蓝','英语'); -- 按照设置写入表格数据
    insert into `student`(`name`) values('小黑'); -- 按照设置写入表格数据

    使用Python连接MySQL数据库的步骤和方法详解

    六、修改、删除资料

    条件:>,<,>=,<=,=,<>

    set sql_safe_updates = 0; -- 把预设更新模式关闭,这样更新操作才可以成功
    create table student(
            `student_id` int primary key auto_increment, -- 第一列
        `name` varchar(20), -- 第二列
        `major` varchar(20), -- 第三列,20指的是最大字符长度
        `score` int
    ); -- 创建表格并设计属性
    drop table `student`;
    select * from `student`; -- 搜索表格的全部资料
    
    insert into `student`(`name`,`major`) values('小蓝','英语'); -- 按照设置写入表格数据
    insert into `student`(`name`,`major`) values('小白','化学'); -- 按照设置写入表格数据
    insert into `student`(`name`,`major`) values('小黑','生物'); -- 按照设置写入表格数据
    update `student` -- 更新哪个表格
    set `major` = '英语文学' -- 将什么更新成什么
    where `major` = '英语'; -- 将其中谁的什么进行更新
    -- 还可以进行多个更新
    update `student` -- 更新哪个表格
    set `major` = '生化' -- 将什么更新成什么
    where `major` = '生物' or `major` = '化学' ; -- 将其中谁的什么进行更新
    update `student` -- 更新哪个表格
    set `name` = '小辉',`major` = '生化' -- 将什么更新成什么
    where `student_id`=1 ; -- 将其中谁的什么进行更新
    -- 不加条件则都改
    update `student` -- 更新哪个表格
    set `major` = '物理'; -- 将其中谁的什么进行更新,都改成了生化
    
    delete from `student`
    where `student_id` = 3; -- 删除表格中的数据
    -- 条件也可以设置多个
    delete from `student`
    where `name` = '小白' and `major`='物理'; -- 删除表格中的数据
    
    delete from `student`; -- 删除所有的资料

    七、取得资料

    -- 取得资料
    select * from `student`; -- 取得表格的全部资料
    select `name` from `student`; -- 只取得表格的对应数据
    select `name`, `major` from `student`; -- 取得表格的对应多个数据
    select * from `student` ORDER BY `score`; -- 取得表格的全部资料,并排序(默认正序)
    select * from `student` ORDER BY `score` DESC; -- 取得表格的全部资料,并排序(由高到低,asc是由低到高)
    select * from `student` ORDER BY `score` ,`student_id`; -- 取得表格的全部资料,并排序(先有score做排序,score中相同的再由student_id做排序)
    select * from `student` LIMIT 3 ; -- 限制资料范围
    select * from `student` ORDER BY `score` LIMIT 3 ; -- 排序并限制资料范围
    select * from `student` where `major`= '英语'; -- 查找对应资料
    select * from `student` where `major`= '英语' and `student_id` = 1; -- 查找对应资料(多条件)
    select * from `student` where `major` in('历史','英语','生物'); -- 查找对应资料(多条件)1

    八、创建公司资料库

    CREATE DATABASE `sql_tutorial`;  -- 创建资料库
    SHOW databases;        -- 展示资料库
    use `sql_tutorial`; -- 选择使用的资料库
    
    create table `employee`(
            `emp_id` int primary key, -- 第一列
        `name` varchar(20), -- 第二列,20指的是最大字符长度
        `bath_date` date, -- 第三列
        `sex` varchar(1),
        `salary` int,
        `branch_id` int,
        `sup_id` int
    ); -- 创建表格并设计属性
    create table `branch`(
            `branch_id` int primary key , -- 第一列
        `branch_name` varchar(20), -- 第二列
        `manager_id` int, -- 第三列,20指的是最大字符长度
        foreign key (`manager_id`) references `employee`(`emp_id`) on delete set null -- 设置好外键(选择什么是并对应什么表格的什么属性)
    ); -- 创建表格并设计属性
    -- 补充外键(外表格对应)
    alter table `employee` -- 在什么表格上进行更新
    add foreign key(`branch_id`) -- 在他的什么属性上
    references `branch`(`branch_id`) -- 从哪的什么属性对应
    on delete set null;
    -- 补充外键(内表格对应)
    alter table `employee` -- 在什么表格上进行更新
    add foreign key(`sup_id`) -- 在他的什么属性上
    references `employee`(`emp_id`) -- 从哪的什么属性对应
    on delete set null;
    create table `client`(
            `client_id` int primary key , -- 第一列
        `client_name` varchar(20), -- 第二列
        `phone` varchar(20) -- 第三列,20指的是最大字符长度
    ); -- 创建表格并设计属性
    create table `works_with`(
            `emp_id` int, -- 第一列
        `client_id` int, -- 第二列
        `total_sales` int, -- 第三列,20指的是最大字符长度
        primary key(`emp_id`,`client_id`),
        foreign key (`emp_id`) references `employee`(`emp_id`) on delete cascade, -- 设置好外键(选择什么是并对应什么表格的什么属性)
            foreign key (`client_id`) references `client`(`client_id`) on delete cascade -- 设置好外键(选择什么是并对应什么表格的什么属性)
    ); -- 创建表格并设计属性
    -- 当增加资料冲突的时候可以先将其设置为null然后再更新
    insert into `branch` values(1,'研发',null);
    insert into `employee` values(206,'xiaohuang','1998-10-08','F',50000,1,null);
    update `branch`
    set `manager_id` = 206
    where `branch_id` = 1;

    九、取得公司资料

    -- 取得对应表格所有资料
    select * from `employee`;
    -- 取得对应表格所有资料并排序(默认低到高)
    select * from `employee` order by `salary`; -- 低为加desc
    -- 增加限制取出条件
    select * from `employee` order by `salary` desc limit 3 ; -- 取出前三高
    -- 取出对应属性
    select  `name` from `employee` ;
    -- 取出对应属性的内容(且不重复)
    select distinct `name` from `employee` ;

    十、聚合函数

    -- 取得人数
    select count(*) from `employee`; -- 统计几笔资料
    select count(`sup_id`) from `employee`; -- 统计对应属性资料个数(null不计入)
    -- 增加条件取数
    select count(*)
    from `employee`
    where `bath_date` > '1970-01-01' and `sex` = 'F'; -- 统计几笔资料
    -- 计算对应的属性的平均
    select avg(`salary`) from `employee`;
    -- 计算对应的属性的总和
    select sum(`salary`) from `employee`;
    -- 取得最高的
    select max(`salary`) from `employee`;
    -- 取得最低的
    select min(`salary`) from `employee`;

    十一、万用子元

    -- %表示多个子元,_表示一个子元
    -- 取得尾数335的数据
    select * from `client` where `phone` like '%335';
    -- 取得姓艾的
    select * from `client` where `client_name` like '艾%';
    -- 取得生日是10月的
    select * from `employee` where `bath_date` like '_____10%';

    十二、联集

    -- 员工与客户合并为一列(类型必须相同)
    select `name` from `employee`
    union
    select `client_name` from `client`;
    -- 多个数据合并为多列(类型必须相同)
    select `emp_id`, `name` from `employee`
    union
    select `client_id`, `client_name` from `client`;
    -- 多个数据合并为多列(类型必须相同)顺便改个名
    select `emp_id` as `total_id`, `name` as `total_name` from `employee`
    union
    select `client_id`, `client_name` from `client`;

    十三、连接

    -- 连接
    -- 取得所有部门经理名字,这就需要先确定部门再确定经理(二表相连)
    select * from `employee` join `branch` on `emp_id` = `manager_id`;
    -- 还可以写成
    select * from `employee` join `branch` on `employee`.`emp_id` = `branch`.`manager_id`;
    -- 附加条件
    select * from `employee` left join `branch` on `employee`.`emp_id` = `branch`.`manager_id`; -- 左边的表格(join的左边)返回全部数据,右边的必须满足才可

    十四、子查询

    -- 查询套查询
    select `name` from `employee`
    where `emp_id` = (
            select `manager_id`
        from `branch`
        where `branch_name` = '研发'
    ); -- 查找研发部门的经理名字
    select `emp_id` from `employee`
    where `emp_id` in (
            select `emp_id` 
            from `works_with`
            where `total_sales` > 50000
    ); -- 销售资金超50000的人有哪些

    十五、On delete

    • On delete set null 的作用是若该数据删除了(或者说对应不到了)则会设置为null

    • On delete decade 若对应数据删除了(或者说对应不到了)则该表格的这条数据跟着删掉

    注:当为主键时则不能设置为on delete set nullcreate table `branch`(

            `branch_id` int primary key , -- 第一列
        `branch_name` varchar(20), -- 第二列
        `manager_id` int, -- 第三列,20指的是最大字符长度
        foreign key (`manager_id`) references `employee`(`emp_id`) on delete set null -- 设置好外键(选择什么是并对应什么表格的什么属性)
    ); -- 创建表格并设计属性
    create table `works_with`(
            `emp_id` int, -- 第一列
        `client_id` int, -- 第二列
        `total_sales` int, -- 第三列,20指的是最大字符长度
        primary key(`emp_id`,`client_id`),
        foreign key (`emp_id`) references `employee`(`emp_id`) on delete cascade, -- 设置好外键(选择什么是并对应什么表格的什么属性)
            foreign key (`client_id`) references `client`(`client_id`) on delete cascade -- 设置好外键(选择什么是并对应什么表格的什么属性)
    ); -- 创建表格并设计属性

    十六、Python连接MySQL

    # 导入功能包(mysql-connector-python)
    import mysql.connector
    
    # 创入连线
    connection = mysql.connector.connect(host='localhost',  # mysql的位置
                                         port='3306',  # 连接通道
                                         user='root',   # 使用者名称
                                         password='123456')  # 使用者密码
    '''connection = mysql.connector.connect(host='localhost',  # mysql的位置
                                         port='3306',  # 连接通道
                                         user='root',   # 使用者名称
                                         password='123456',   # 使用者密码
                                         database='sql_tutorial')  # 直接打开目标资料库'''
    
    # 告知开始使用操作
    cursor = connection.cursor()
    # 在对mysql操作时即用该格式:cursor.execute("你要执行的mysql语句命令")
    
    # 创建资料库
    # cursor.execute("CREATE DATABASE `qq`;")
    
    # 取得所有资料库名称
    cursor.execute("show databases;")
    records = cursor.fetchall()  # 取出回传资料库
    for r in records:
        print(r)  # 因为回传列表,为便于观察,进行循环打印
    
    # 选择资料库
    cursor.execute("use `sql_tutorial`;")
    
    # 创建表格
    
    # 告知关闭操作
    cursor.close()
    # 若要懂资料进行修改需要结尾加一个指令,这样才能提交指令生效
    connection.commit()
    # 关闭连线
    connection.close()
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python MySQL
    相关文章 更多
    navicat导入数据库步骤详解及常见问题处理教程
    navicat导入数据库步骤详解及常见问题处理教程

    详解Navicat导入数据库的标准步骤,涵盖SQL脚本执行与CSV数据导入两种核心场景。针对导入过程中常见的字符集乱码、主键冲突及外键约束错误,提供具体的设置方法与修复建议,确保数据迁移准确无误。

    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    SQL主键约束和唯一约束有什么区别
    SQL主键约束和唯一约束有什么区别

    深入理解SQL PRIMARY KEY与UNIQUE约束的区别。文章从行标识与重复限制的目标出发,详解主键的非空特性、外键引用角色以及多数据库对NULL值的处理差异。结合users表实战示例,指导开发者如何根据字段稳定性与业务语义合理选择约束类型,避免设计误区。

    SQL约束有哪些类型及作用
    SQL约束有哪些类型及作用

    刚开始设计关系型数据库?了解PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL、CHECK、DEFAULT等约束的作用、语法和排错方法。本文以PostgreSQL语法为主,结合用户订单场景,清晰展示如何防止脏数据并处理常见约束冲突。

    SQL游标常见错误排查:死锁与资源未释放问题
    SQL游标常见错误排查:死锁与资源未释放问题

    深入解析SQL游标导致的死锁与资源未释放问题。通过PostgreSQL与MySQL语法对比,展示如何识别长事务持锁、分析锁等待链,并提供短事务提交、异常清理及批量处理的最佳实践,确保数据库连接与锁资源及时释放。

    SQL中怎么创建和删除约束
    SQL中怎么创建和删除约束

    后端开发者在维护数据库时,常需对现有表添加主键、唯一或外键约束。若直接执行ADD CONSTRAINT,往往因存量数据不合规导致报错。本文详解操作前的数据清洗步骤、标准SQL语法及MySQL等特殊写法,帮助你在生产环境安全完成结构变更。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    SQL分组统计查询:GROUP BY与HAVING子句用法示例
    SQL分组统计查询:GROUP BY与HAVING子句用法示例

    针对 SQL 初学者的分组统计实战指南。深入解析 GROUP BY 分组机制、WHERE 与 HAVING 的执行时机差异,以及 COUNT 函数对 NULL 值的处理逻辑。通过具体代码示例演示如何正确筛选聚合结果,并排查因 JOIN 连接导致的统计数据异常,提升报表准确性。

    SQL Server与MySQL游标基本语法及完整代码示例
    SQL Server与MySQL游标基本语法及完整代码示例

    本文详细对比SQL Server和MySQL中游标的基本用法。从DECLARE声明到FETCH遍历,再到CLOSE关闭与DEALLOCATE/Handler清理,解析两者在语法结构、变量接收及异常处理上的核心差异。通过标准代码示例展示如何安全使用游标,避免资源泄漏,适用于需要进行数据库存储过程开发或跨平台迁移的开发者。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。