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

Python基础_数据库

1.Python操作MySQL

【1】pymysql模块

安装:

pip install pymysql

基本语法

importpymysql# 连接到MySQL数据库conn=pymysql.connect(host='localhost',user='your_username',password='your_password',database='your_database')# 创建游标对象cursor=conn.cursor()# 执行SQL查询query="SELECT * FROM your_table"cursor.execute(query)# 获取查询结果result=cursor.fetchall()forrowinresult:print(row)# 关闭游标和数据库连接cursor.close()conn.close()

在上述示例中,首先使用pymysql.connect()函数连接到MySQL数据库。您需要提供数据库的连接参数,如主机名、用户名、密码和数据库名称。

然后,使用连接对象的cursor()方法创建一个游标对象。游标用于执行SQL查询并获取结果。

执行SQL查询时,可以使用游标对象的execute()方法传递SQL查询语句。在示例中,我们执行了一个简单的SELECT语句来获取表中的所有数据。

接下来,使用游标对象的fetchall()方法获取查询结果。fetchall()方法返回一个包含所有行的列表,每行又是一个元组。

最后,使用cursor.close()关闭游标对象,使用conn.close()关闭数据库连接。

请注意,在实际使用中,可能需要根据具体情况进行错误处理、事务处理和参数化查询等操作,以确保代码的正确性和安全性。

案例:创建user表,插入用户记录:

importpymysqldefcreate_users_table():conn=pymysql.connect(host='localhost',user='root',password='yuan0316',database='db_day02')cursor=conn.cursor()# 创建表的 SQL 语句create_table_query=''' CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ) '''# 执行创建表的 SQL 语句cursor.execute(create_table_query)cursor.close()conn.close()definsert_user(username,password):conn=pymysql.connect(host='localhost',user='root',password='yuan0316',database='db_day02')cursor=conn.cursor()# 插入记录的 SQL 语句insert_query=f"INSERT INTO users (username, password) VALUES ('{username}', '{password}')"# 执行插入记录的 SQL 语句cursor.execute(insert_query)conn.commit()cursor.close()conn.close()# 调用创建表函数create_users_table()# 用户输入作为参数传递给插入函数username=input("请输入用户名:")password=input("请输入密码:")# 调用插入函数insert_user(username,password)

【2】SQL注入

SQL注入是一种常见的安全漏洞,它发生在应用程序未正确验证和处理用户输入数据时。攻击者可以通过在输入中插入恶意的SQL代码,利用这个漏洞来执行未经授权的数据库操作。

下面是一个简单的示例,展示了一个存在SQL注入漏洞的代码:

importpymysqldeflogin(username,password):conn=pymysql.connect(host='localhost',user='root',password='yuan0316',database='db_day02')cursor=conn.cursor()# 构造SQL查询语句query=f"SELECT * FROM users WHERE username = '{username}' AND password = '{password}'"print("query:",query)# 执行SQL查询cursor.execute(query)# 获取查询结果result=cursor.fetchall()cursor.close()conn.close()iflen(result)>0:print("登录成功")else:print("登录失败")# 用户输入作为参数传递给登录函数username=input("请输入用户名:")password=input("请输入密码:")login(username,password)

在上述示例中,我们定义了一个login函数,该函数接收用户名和密码作为参数。在函数内部,我们使用pymysql库连接到MySQL数据库,并构造了一个包含用户名和密码的SQL查询语句。

然而,代码中存在SQL注入漏洞。如果用户输入恶意的数据,例如在用户名输入框中输入

' or 1=1;--,那么构造的查询语句将变为:

SELECT*FROM users WHERE username=''or1=1;--' AND password = '111'

这将导致查询条件始终为真,绕过了实际的身份验证过程,从而允许攻击者以任意用户登录。

要修复SQL注入漏洞,可以使用参数化查询或输入验证来过滤和转义用户输入数据,确保它们不会被当作SQL代码执行。以下是修复SQL注入漏洞的示例代码:

# 使用参数化查询构造SQL语句query="SELECT * FROM users WHERE username = %s AND password = %s"params=(username,password)# 执行SQL查询cursor.execute(query,params)

在修复后的代码中,我们使用了参数化查询的方式来构造SQL语句。将用户输入作为参数传递给execute()方法,而不是直接将它们插入到SQL查询语句中。这样可以确保用户输入的数据被正确地转义和处理,防止SQL注入攻击的发生。

http://www.cnnetsun.cn/news/1504330.html

相关文章:

  • SOME/IP服务发现(SD)避坑指南:从FindService到SubscribeACK,一次讲透所有配置参数与常见故障
  • Flutter + OpenHarmony应用上架华为应用市场实战:从代码合规到审核加速的进阶策略
  • CI/CD 流水线性能优化:从构建到部署
  • Go语言中的安全最佳实践
  • 仅剩72小时!Python 3.15.0b3 JIT默认关闭倒计时,现在掌握配置=抢占下一代性能红利
  • springboot框架的的小区运动场地中心预约管理系统的设计与实现-vue
  • 基于Verilog与D触发器的三位扭环计数器FPGA实现详解
  • stm32开发新手福音:告别复杂安装,用快马ai生成带详解的hal库基础代码
  • 3个隐藏设置彻底解决Win11笔记本待机耗电问题:实战优化指南
  • NBA 历史得分 Top10 数据可视化项目书​
  • 雪球K线接口实战:5分钟搞定股票数据抓取(附Python代码)
  • Windows下OpenClaw安装指南:快速对接百川2-13B量化模型
  • 别再瞎猜了!YOLOv8 模型缩放(width_multiple)与通道计算(c1,c2)的完整逻辑
  • Ntopng权限绕过漏洞(CVE-2021-28073)深度分析与实战复现
  • 技术萨满祭典:给数据中心献祭机械硬盘
  • 从点亮LED看本质:在STM32上移植RT-Thread Nano后,你的main函数发生了什么变化?
  • 如何高效使用bypass-paywalls-chrome-clean:完整实战指南
  • 重构百元级开源飞控:ESP-Drone如何突破硬件限制实现专业级飞行控制
  • Spring Boot项目SQL执行时间监控实战:手把手配置P6Spy记录慢查询与性能分析
  • G5080 G6080 G7080 G1810 G2810 ,MG3680,ts3380最新清零软件5B00,5B01,5B02,1700,1701,1702,1704,P07,E08废墨收集器已满
  • USB设备一键安全弹出工具让设备移除操作从此高效无忧
  • 从零开始:在VMware上为CTF Pwn搭建Ubuntu 22.04环境(含全套工具链与美化避坑指南)
  • OpenClaw调试技巧:nanobot任务执行日志深度分析
  • OpenClaw安全指南:GLM-4.7-Flash本地化部署最佳实践
  • 我复刻了一个“会避嫌”的登录页,还把它开源了
  • Unity Scroll View进阶:打造丝滑翻页效果的实战指南
  • 孤能子视角:数字时代,“社会生产关系“[3],关系回到现实
  • 工业大模型:小白也能懂的AI新风口,收藏学习必备!
  • Eclipse Hawkbit OTA客户端嵌入式实现指南
  • 企业商业分析系统 v4.0 - 企业级数据分析与网站安全管理平台