当前位置: 首页 > news >正文

Pycharm访问MySQL数据库·上

1.MySQL驱动模块Connector

#导入数据库的驱动工具
import mysql.connector
#连接数据库必备的条件
config = {"host": "localhost","port": 3306,"user": "root","password": "888888","database": "demo"
}
#创建连接项(管道)
conn = mysql.connector.connect(**config)
#创建游标(结果集)
cursor = conn.cursor()
#准备sql
sql = "select * from t_emp where sal > %s and deptno = %s"
#执行sql
#参数1:执行的sql 参数2:传入的参数,位置对应
cursor.execute(sql,(2000,10))
#获得数据
temp = cursor.fetchall()
print(temp)
#关闭游标
cursor.close()

2.SQL注入攻击案例

2.1 演示sql注入

import mysql.connector
config = {"host": "localhost","port": 3306,"user": "root","password": "888888","database": "demo"
}
conn = mysql.connector.connect(**config)
#合成数据
username = "1 OR 1=1"
password = "1 OR 1=1"
#演示sql注入
sql = ("select count(*) from t_user where username="+username+" AND password="+password)
cursor = conn.cursor()
cursor.execute(sql)
#查询的结果为1行1列,使用fetchone只获得第一行的数据,[0]只获得第一个格子里的数据
temp = cursor.fetchone()[0]
print(temp)
cursor.close()

2.2 屏蔽sql注入

import mysql.connector
config = {"host": "localhost","port": 3306,"user": "root","password": "888888","database": "demo"
}
conn = mysql.connector.connect(**config)
#合成数据
username = "1 OR 1=1"
password = "1 OR 1=1"
#屏蔽sql注入
sql = "select count(*) from t_user where username = %s and password=%s"
cursor = conn.cursor()
#sql后拼接'%'为变量替换,易触发sql注入
#sql后拼接','为占位符,可屏蔽sql注入
cursor.execute(sql, (username, password))
temp = cursor.fetchone()[0]
print(temp)
cursor.close()

3.MySQLConnector的异常处理

import mysql.connector
try: # 程序正常执行的区域config = {"host": "localhost","port": 3306,"user": "root","password": "888888","database": "demo"}conn = mysql.connector.connect(**config)#开启事务控制conn.start_transaction()cursor = conn.cursor()sql = "update t_user set username=%s where id=%s"cursor.execute(sql, ("wagaga",1))sql = "insert into t_emp values (%s,%s,%s,%s,%s,%s,%s,%s)"cursor.execute(sql, (9528,'ZOYA','CLERK',7782,'1980-10-17',1300.00,100,10))conn.commit()
except Exception as e: #程序触发异常后执行的区域print("触发异常")if "conn" in dir():conn.rollback()# 如果触发异常则回滚
finally: # 无论程序是否正常执行,都会执行的区域,通常用于关闭连接if "conn" in dir():# 查询是否有conn地址conn.close()# 如果有,则关闭

http://www.lryc.cn/news/503798.html

相关文章:

  • 【CUDA】CUBLAS
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-predict.py
  • 细说Flash存储芯片W25Q128FW和W25Q16BV
  • python爬虫--小白篇【爬取B站视频】
  • Three.js入门-模型加载
  • ECharts实现数据可视化入门详解
  • C++(举例说明类的实例化方式)
  • LeetCode32. 最长有效括号(2024冬季每日一题 32)
  • Textfocals ——基于大言模型的用户驱动型文本改进工具让用户在审阅自己的写作时对其进行修改
  • docker 部署 redis
  • 微信小程序横屏页面跳转后,自定义navbar样式跑了?
  • 回归预测 | MATLAB实现BiGRU(双向门控循环单元)多输入单输出
  • 智能时代的基石:神经网络
  • 红与黑,,
  • 嵌入式驱动开发详解16(音频驱动开发)
  • 【嵌入式软件】跑开发板的前置服务配置
  • 如何高效实现进程间通信
  • scala基础学习_变量
  • Java 身份证校验工具类(15位校验、18位校验与15转18)
  • HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(8)
  • HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由
  • 音频客观测评方法PESQ
  • 前后端分离的项目使用nginx 解决 Invalid CORS request
  • 回归预测 | MATLAB实现SVM-Adaboost集成学习结合支持向量机多输入单输出回归预测
  • 常见排序算法总结 (五) - 堆排序与堆操作
  • kubernetes的三种探针ReadinessProbe、LivenessProbe和StartupProbe,以及使用示例
  • 掌握线性回归:从简单模型到多项式模型的综合指南
  • Java:183 基于SSM的高校食堂系统
  • 光谱相机