MySQL IDE与pymysql模块

news2024/11/25 19:27:36

一、IDE工具介绍

生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具
在此我们推荐使用Navicat软件或pycharm来连接数据库,这样就能更详细直观地查询数据

掌握:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 备份库/表

#注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键

 二、pymysql模块

pip3 install pymysql

1、链接、执行sql、关闭(游标)

import pymysql
user=input('用户名: ').strip()
pwd=input('密码: ').strip()

# 链接
conn=pymysql.connect(host='localhost',user='root',password='123',database='db1',charset='utf8')

# 游标
cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示
#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)


# 执行sql语句
sql='select * from userinfo where name="%s" and password="%s"' %(user,pwd) #注意%s需要加引号
print(sql)
res=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
print(res)

cursor.close()
conn.close()

if res:
    print('登录成功')
else:
    print('登录失败')

2、execute()之sql注入

注意:符号–会注释掉它之后的sql,正确的语法:–后至少有一个任意字符

根本原理:就根据程序的字符串拼接name=‘%s’,我们输入一个xxx' -- haha,用我们输入的xxx加’在程序中拼接成一个判断条件name='xxx' -- haha'

最后那一个空格,在一条sql语句中如果遇到select * from t1 where id > 3 -- and name='egon';则--之后的条件被注释掉了

#1、sql注入之:用户存在,绕过密码
egon' -- 任意字符

#2、sql注入之:用户不存在,绕过用户与密码
xxx' or 1=1 -- 任意字符

解决方法:

# 原来是我们对sql进行字符串拼接
# sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
# print(sql)
# res=cursor.execute(sql)

#改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from userinfo where name=%s and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
res=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。

3、增、删、改:conn.commit()

import pymysql
# 链接
conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')
# 游标
cursor=conn.cursor()

# 执行sql语句
# part1
# sql='insert into userinfo(name,password) values("root","123456");'
# res=cursor.execute(sql) #执行sql语句,返回sql影响成功的行数
# print(res)

# part2
# sql='insert into userinfo(name,password) values(%s,%s);'
# res=cursor.execute(sql,("root","123456")) #执行sql语句,返回sql影响成功的行数
# print(res)

# part3
sql='insert into userinfo(name,password) values(%s,%s);'
res=cursor.executemany(sql,[("root","123456"),("lhf","12356"),("eee","156")]) #执行sql语句,返回sql影响成功的行数
print(res)

conn.commit() # 提交后才发现表中插入记录成功
cursor.close()
conn.close()

4、批量查询:fetchone,fetchmany,fetchall

import pymysql
# 链接
conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')
# 游标
cursor=conn.cursor()

# 执行sql语句
sql='select * from userinfo;'
rows=cursor.execute(sql) #执行sql语句,返回sql影响成功的行数rows,将结果放入一个集合,等待被查询

# cursor.scroll(3,mode='absolute') # 相对绝对位置移动
# cursor.scroll(3,mode='relative') # 相对当前位置移动
res1=cursor.fetchone()
res2=cursor.fetchone()
res3=cursor.fetchone()
res4=cursor.fetchmany(2)
res5=cursor.fetchall()
print(res1)
print(res2)
print(res3)
print(res4)
print(res5)
print('%s rows in set (0.00 sec)' %rows)



conn.commit() # 提交后才发现表中插入记录成功
cursor.close()
conn.close()

'''
(1, 'root', '123456')
(2, 'root', '123456')
(3, 'root', '123456')
((4, 'root', '123456'), (5, 'root', '123456'))
((6, 'root', '123456'), (7, 'lhf', '12356'), (8, 'eee', '156'))
rows in set (0.00 sec)
'''

5、获取插入的最后一条数据的自增ID

import pymysql
conn=pymysql.connect(host='localhost',user='root',password='123',database='db')
cursor=conn.cursor()

sql='insert into userinfo(name,password) values("xxx","123");'
rows=cursor.execute(sql)
print(cursor.lastrowid)  # 在插入语句后查看

conn.commit()

cursor.close()
conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023 年程序员高考试卷!你能答对几个?

又是一年高考季,一起来做做“程序员们的高考试卷”,压压惊吧~ 2023年普通高等学校招生全国统一考试 程序员的高考试卷(A卷) 考生类别:码农 1、程序员A:借我1000元吧。 程序员B:给你凑个整数…

Linux基础知识点2

Linux基础知识 适合有Linux基础的人群进行复习。 禁止转载! 文件管理与常用命令 Linux的文件的组成部分: 文件名、inode(i节点)和block(真正存数据的区域)。 查看某个文件的属性: ls -lh #可看到有类似”-rw-r--r--”的属性符号 …

轻松来自实力,亚马逊云科技助力边界智能应对业务高峰值数据考验

边界智能(Bianjie.AI)是2016年创立于上海的国家高新技术企业和专精特新企业,同时也是以香港为全球总部、服务全球的区块链技术创新团队。公司专注于区块链技术支持的下一代互联网应用服务,自主研发了跨多条联盟链的分布式应用服务…

STL入门 + 刷题(下)

👂 Raindrops (Intl. Version) - Katja Krasavice/Leony - 单曲 - 网易云音乐 👂 Rush E (Playable Version) - Sheet Music Boss - 单曲 - 网易云音乐 👂 最美的瞬间 - 真瑞 - 单曲 - 网易云音乐 👂 你可别卷了 - SipSu小口酥…

CTF Crypto --- orz!

文章目录 题目解题过程 题目 from Crypto.Util.number import * from gmpy2 import *flag bxxx t len(flag)//3 part1 bytes_to_long(flag[:t]) part2 bytes_to_long(flag[t:2*t]) part3 bytes_to_long(flag[2*t:]) q getPrime(1024) p next_prime(q) n p * qo getPr…

面试必备,29个Java面试必考点、1000多道Java面试题

马上金九银十招聘旺季就到了,不知道大家是否准备好了,面对金九银十的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们Java程序员来说,多数的公司总体上面试都是以自我介绍项目介绍项目细节/难点提问基础…

文献下载神器:文献党下载器使用方法

文献党下载器是一款文献资源整合平台,把知网、万方、维普、超星/读秀、Web of Science、Elsevier(ScienceDirect)、Wiley 、SpringerLink、EI(工程索引)、IEEE(电气电子工程师学会)、Taylor &am…

ESP32-C3系列模组简介

ESP32-C3是一款安全稳定、低功耗、低成本的物联网芯片,搭载RISC-V 32位单核处理器,为物联网产品提供行业领先的射频性能、完善的安全机制和丰富的内存资源。 嵌入式智能终端、无线WIFI技术以及Internet的广泛应用必将使家居控制变得更加自动化、智能化和…

基础软件加速自主创新,openGauss成就业务“新箭头”

不久前,想必业界都注意到了MetaERP横空出世的消息。作为企业经营的核心系统,MetaERP突破外部封锁,实现完全自研替代,是华为有史以来牵涉面较广、复杂性较高的项目。这其实是国产基础软件迅速崛起的一个缩影。 基础软件产业是关系…

element-plus vue 错误汇总

input 无法输入0.01 element ui input 无法输入0.01 一输出0.0就报错&#xff0c;是因为写成了v-model.number&#xff0c;改成v-model即可。 <el-input v-model.number"formData.reduceMoney"class"input200"type"number"focus"discou…

C#开发的OpenRA游戏之建造物品的窗口1

C#开发的OpenRA游戏之建造物品的窗口1 前面已经分析了基地工程车的创建和移动,当玩家把基地工程车移动到合适的位置,就会进行部署基地,也即是选择一个离矿场比较近的位置,因为这样做可以提高采矿的速度,减少采矿车的运输时间。 接着下来,虽然基地是建立了,但是还需要创…

HybridCLR 最佳实践,老项目集成热更(战棋项目)

文本介绍了老项目使用HybridCLR 集成热更的过程 从项目结构调整&#xff0c;代码调整&#xff0c;打包&#xff0c;热更测试&#xff0c;跑完HybridCLR所有流程 先看效果&#xff08;安卓&#xff09; 源码及资料领取方式私信&#xff1a;领取资料&#xff1a;HybridCLR战棋热更…

2023亚马逊云科技中国峰会引领无服务器架构新潮流:Serverlesspresso Workshop

序言 在今年3月&#xff0c;我有幸接触了一个项目&#xff0c;也因此结识了 亚马逊云科技无服务器架构 Serverless。在陆续了解 Amazon 产品的过程中&#xff0c;我逐渐发现它所带给我的惊喜远远超出了最初的预期。 今天&#xff0c;想向大家介绍一个名为 Serverlesspresso Wor…

京东数据分析:2023年Q1京东奶粉品牌销量排行榜

近几年我国新生人口数量不断下降。尽管国家大力推进多胎政策&#xff0c;但奶粉的市场需求量依然有明显下滑&#xff0c;导致国内奶粉行业的发展低迷&#xff0c;今年Q1依然没有回弹的迹象。 根据鲸参谋数据显示&#xff0c;今年Q1奶粉在京东平台销量2000万件&#xff0c;同比下…

自学网络安全(白帽黑客)必看!OWASP十大漏洞解析!

在学习网络安全之前&#xff0c;需要总体了解安全趋势和常见的Web漏洞&#xff0c;在这里我首推了解OWASP&#xff0c;因为它代表着业内Web安全漏洞的趋势&#xff1b; 目录 一、OWASP简介 OWASP Top 10: 2013版至2017版改变了哪些内容 二、OWASP Top 10 A1:注入漏洞 A2:…

【C语言】整,浮点型数据存储,大小端。细节拉满!!

目录 一. 整型 1. C语言内置整型家族 类型的意义&#xff1a; 2.整型在内存如何存储的呢&#xff1f; 3. 原码&#xff0c;反码&#xff0c; 补码 原码 反码 补码 4. 当 整型遇上unsigned 会发生什么呢&#xff1f; 1. unsigned 与 signed 解析 2. printf 输出 有无…

Kafka学习---1、Kafka 概述、Kafka快速入门

1、Kafka概述 1.1 定义 1、Kafka传统定义&#xff1a;Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue)&#xff0c;主要是应用于大数据实时处理领域。 2、发布/订阅&#xff1a;消息的发布者不会将信息直接发送给特定的订阅者&#xff0c;而是将发布的信息分…

【Linux 学习 ①】- Linux 环境搭建

目录 一、GouMai 云服务器 二、使用 Xshell 远程登录服务器 三、编写一个 C 程序 四、多用户共享同一个服务器 一、GouMai 云服务器 我们以腾讯云为例&#xff08;购买其他厂商的云服务器&#xff0c;例如&#xff1a;华为云、阿里云&#xff0c;其操作也是类似的&#…

Java集成开发环选择与Eclipse初始常用配置

开发工具的选择 Eclipse 、Idea是最常用的两个Java开发工具&#xff0c;虽然Idea相比前者更易用&#xff0c;但由于其价格昂贵&#xff0c;且由于整体市场经济环境的猥琐&#xff0c;导致各公司开始打击盗版软件&#xff0c;以此来增加收入。 基于以上背景&#xff0c;还是建议…

Kamrada operator:新一代的 Karmada 管理方式

Karmada operator 是 Karmada 社区推出的新组件&#xff0c;它为用户提供了全新的 Karmada 生命周期管理的方式。用户可以在全局集群之上集中式来管理多个 Karmada&#xff0c;通过 CR 资源来控制 Karmada 的创建、升级和卸载。为用户运维和管理 Karmada 提供了极大的便捷。本文…