python中操作MySQL

pymysql模块  第三方模块

import pymysql

# 1.连接MySQL服务器
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='321',
    db='db3',
    charset='utf8mb4'
)
# 2.产生游标对象
# cursor = conn.cursor()  # 括号内不填写额外参数,数据是元组,指定性不强  [()]
cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)  # [{}]
# 3.编写sql语句
sql = 'select * from score;'
# 4.发送SQL语句
affect_rows = cursor.execute(sql)
# 5.获取SQL语句执行之后的结果
res = cursor.fetchall()
print(res)

pymysql补充说明

1.获取数据
    fetchall()  获取所有结果
    fetchone()  获取结果集的第一个数据
    fetchmany()  获取指定数量的结果
    
    cursor.scroll(1,'relative')  # 基于当前位置向后移动一个
    cursor.scroll(1,'absolute')  # 基于数据的开头往后移动一位
    
2.增删改查
    autocommit=True  # 针对增删改自动确认(在连接数据库时直接配置)
    conn.commit()  # 针对增删改二次确认(没有配置通过代码确认)

python中SQL的注入问题

我们在python中编写sql语句时会遇到各种问题,比如我们在编写用户登录功能时,只需要输对姓名或者用户名密码都输入错误了,但是却能够东路成功,这是因为遇到了SQL注入问题导致的
SQL注入问题就是利用特殊的组合产生特殊的含义,从而避开正常的业务逻辑
eg:
    sql = 'select * from user where name="jason" --fsdag" and spwd=""'
    转成SQL语句就是
    select * from user where name='jason' --fsdag' and spwd=''  # 用户名后面的语句被注释了
    sql = "select * from user where name='' or 1=1 --fgdsfh' and pwd=''"
    转成SQL语句  
    select * from user where name='' or 1=1 --fgdsfh' and pwd=''  
    # where后面是or连接的只要有一个成立就成立
    
针对上面的这种注入问题使用execute即可解决
    sql = 'select * from user where name=%s and pwd=%s'
    cursor.execute(sql,(username,password))
execute还有一个兄弟executemany,它可以一次性传入多条数据 executemany[sql,(),()]

视图

视图就是我们通过查询得到一张表,然后保存下来留待下次使用但是这张表是虚拟的,只能查询不能做修改删除操作
create view teacher_course as
select * from teacher inner join course on teacher.tid = course.teacher_id
posted on   zyg111  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示