mysql在python中的运用与mysql练习,pip下载源

MySQL的阶段应用

  • python如何操作MySQL
  • python代码操作MySQL
  • MySQL的练习

python如何操作MySQL

实现python代码操作MySQL需要借助第三方模块

该模块:也是由他人所写传到网上的

所以使用第三方软件需要网上下载

下载pymysql

环境变量配置

1.首先要配置pip3.exe文件的环境变量

 

2.在path路径中添加pip3.exe所在路径

 

 

 

 方法1:

打开cmd窗口,输入

pip3 insatll pymysql  # 此命令默认在外网下载,网速会比较慢

方法2:

在pycharm终端,输入

pip3 insatll pymysql

方法3:

在pycharm用快捷键

1.点击file>>>setting

 

 

 2.Project:...... >>> Python interpreter >>> 加号

3.在查找框输入pyMySQL,在菜单中选择需要的模块,点击Install Package既可。

运程仓库

pip3下载模块时默认都是从国外的仓库下载,所以下载速度很慢,我们可以切换到国内的模块

    (1)阿里云 http://mirrors.aliyun.com/pypi/simple/2)豆瓣 http://pypi.douban.com/simple/3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/5)华中科技大学http://pypi.hustunique.com/

方法1:

命令临时切换

pip3 install 模块名 -i 仓库地址 --trusted-host 仓库地址

 

方法2:

pycharm 下载模块更换仓库地址

1.点击file>>>setting

 

 3.在查找框页面点击manage  repositories 

4.输入想要更改的网址后,点击OK;

 

 

方法3:

永久更改网址,需要修改python内部解释器内置的配置文件(不推荐)

pip3下载模块报错

1.报错信息里面含有timeout

  原因:网络不稳定

  解决:检查网络或重复执行

2.报错信息里面含有warning警告版本过低

  原因:pip版本过低

  解决:拷贝提示信息里的更新命令运行既可

3.报错信息里面没有任何关键字就是一堆红色字体

  原因:下载模块对计算机环境有要求

  措施:下载之前预先准备好环境(百度搜一下)

 

python代码操作MySQL

# 调用pymysql模块
import pymysql

# 创建连结对象
conn= pymysql.connect(
# 回环地址,默认本机地址
host='127.0.0.1',
# 端口号
port=3306,
user='root',
password='111',
database='df',
# 字符编码
charset='utf8'
)
# 生成游标对象等待用户输入命令
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 自定义sql语句,前提纯在teacher表
sql = 'select * from teacher'
# 执行sql语句
cursor.execute(sql)
# 获取执行结果
res=cursor.fetchall();
print(res)

 

 

 

MySQL的练习

1、查询所有的课程的名称以及对应的任课老师姓名

# 需要查询两张表
# 通过课程表中对应的在老师名 # 使用联表法

SELECT
course.cname,
teacher.tname
FROM
teacher
INNER JOIN course ON teacher.tid = course.cid;

2、查询平均成绩大于八十分的同学的姓名和平均成绩

# 使用了两个表
# 查询score表中平均成绩>80分的学生id
-- SELECT student_id,avg(num) FROM score GROUP BY student_id HAVING avg(num)>80;
# 通过对应id再student表中查找对应学生
SELECT
    student.sname,
    t1.av_num 
FROM
    student
    INNER JOIN ( SELECT student_id, avg( num ) AS av_num FROM score GROUP BY student_id HAVING avg( num )> 80 ) AS t1 
WHERE
    student.sid = t1.student_id;

3、查询没有报李平老师课的学生姓名

# 3题:teacher表中李平老师id对应的课程名
-- SELECT course.cid FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id WHERE teacher.tid=2;
# 通过而课程id号在sorce中选择出选课的学生
-- SELECT DISTINCT score.student_id FROM score INNER JOIN (SELECT course.cid as cod FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id WHERE teacher.tid=2) as ta WHERE score.course_id=ta.cod;
# 通过选课的学生反推出不选课的
SELECT
    sname 
FROM
    student 
WHERE
    sid NOT IN (
    SELECT DISTINCT
        score.student_id 
    FROM
        score
        INNER JOIN ( SELECT course.cid AS cod FROM teacher INNER JOIN course ON teacher.tid = course.teacher_id WHERE teacher.tid = 2 ) AS ta 
    WHERE
        score.course_id = ta.cod 
    );

4、查询没有同时选修物理课程和体育课程的学生姓名(即只选一个课程的学生)

# 4 找到体育。物理id
# 找到选修物理的体育的对应id
-- SELECT cid FROM course WHERE cname in ('体育','物理');
# 通过id分组选课学生,计数只出现一次的学生
--     SELECT student_id FROM score WHERE course_id in (SELECT cid FROM course WHERE cname in ('体育','物理')) GROUP BY student_id HAVING COUNT(student_id)=1;
# 通过上述获取id选择学生姓名
SELECT
    sname 
FROM
    student 
WHERE
    sid IN (
    SELECT
        student_id 
    FROM
        score 
    WHERE
        course_id IN (
        SELECT
            cid 
        FROM
            course 
        WHERE
        cname IN ( '体育', '物理' )) 
    GROUP BY
        student_id 
    HAVING
        COUNT( student_id )= 1 
    );

5、查询挂科超过两门(包括两门)的学生姓名和班级

# 5.按学生分组,成绩低于60的执行
-- SELECT student_id FROM score WHERE num<60 GROUP BY student_id HAVING COUNT(course_id)>=2;
# 找学生信息
-- SELECT * FROM student WHERE sid in (SELECT student_id FROM score WHERE num<60 GROUP BY student_id HAVING COUNT(course_id)>=2);
# 通过学生信息找对应班级
SELECT
    class.caption,
    bd.sname 
FROM
    class
    INNER JOIN (
    SELECT
        * 
    FROM
        student 
    WHERE
    sid IN ( SELECT student_id FROM score WHERE num < 60 GROUP BY student_id HAVING COUNT( course_id )>= 2 )) AS bd 
WHERE
    bd.class_id = class.cid;

posted @ 2021-09-09 19:42  微纯册  阅读(268)  评论(0编辑  收藏  举报