数据库可视化工具简介以及pymysql的使用
1.可视化工具Navicat
我们自己开发测试时,可以使用该可视化工具,以图形界面的形式操作数据库
在生产环境中,为了显示自己的逼格,一般不建议使用它
官网下载:https://www.navicat.com/en/products/navicat-for-mysql
网盘下载:https://pan.baidu.com/s/1bpo5mqj
2.pymysql的使用
2.1模块的下载(终端)
pip install pymysql
2.2链接,执行sql以及关闭游标
这是我在test库下创建的ttt表格

import pymysql
user = input('username:').strip()
pwd = input('password:').strip()
# 链接
conn = pymysql.connect(host='localhost',port=3306,user='root',password='',database='test',charset='utf8')
# 创建游标对象
cursor = conn.cursor()
# 执行mysql语句
sql='select * from ttt where name="%s" and password="%s"' %(user,pwd)
print(sql)
# 执行sql语句,返回sql查询成功的记录数目,输入错误则是0,正确输出1
result = cursor.execute(sql)
print(result)
cursor.close()
conn.close()
类似结果

2.3 execute()之sql注入
看看下面两种输入方式(注意输入的是单引号还是双引号,另--后面还有空格,否则输出是0)
在用户名输入正确的情况下绕过密码(bob"-- 任意字符)

直接绕过用户名和密码访问(xxx' or 1=1 -- 任意字符)

造成上面结果的原理:
就根据程序的字符串拼接name='%s',我们输入一个xxx"-- haha,用我们输入的xxx加'在程序中拼接成一个判断条件name='xxx' -- haha'
解决办法:
核心就是不使用字符串拼接方方式去访问就ok,下面是修改的代码
import pymysql
user = input('username:').strip()
pwd = input('password:').strip()
# 链接
conn = pymysql.connect(host='localhost',port=3306,user='root',password='',database='test',charset='utf8')
# 创建游标对象
cursor = conn.cursor()
# 执行mysql语句,这里两个%不需要加上引号,mysql会默认给加上,另外pymysql模块自动帮我们
# 将uer和pwd注入,所以下面括号内的内容必不可少(也可以是列表),它其实间接的和字符串拼接是一个道理
sql = "select * from ttt where name=%s and password=%s"
print(sql) # 这步没啥意义,就是让你看看结果
res = cursor.execute(sql,(user,pwd))
print(res)
cursor.close()
conn.close()
结果

2.4 增、删、改:conn.commit()
这里一定要有execute执行和commit提交这几步
import pymysql # 链接
conn = pymysql.connect(host='localhost',port=3306,user='root',password='',database='test',charset='utf8') # 创建游标对象
cursor = conn.cursor() # 增一个
sql = "insert into ttt(name,password) values(%s,%s);"
res = cursor.execute(sql,('luffy',666)) # 增多个
sql = "insert into ttt(name,password) values(%s,%s);"
res = cursor.executemany(sql,[('qq',454),('ww',574),('ee',322)]) # 必须放进一个大的列表里 # 改操作
sql = "update ttt set name = %s where id = 4;"
cursor.execute(sql,'zoro') # 删操作
sql = "delete from ttt where id=2;"
cursor.execute(sql) # 删除了这步执行语句也得要有 conn.commit() # 提交语句,必须要有,别忘啊
cursor.close()
conn.close()
2.5查 fetchone,fetchmany,fetchall(属于光标操作)
fetchone():获取下一行数据,第一次为首行;
fetchall():获取所有行数据源
fetchmany(4):获取4行数据
上面的表经过增删改后:

fetchone()与fetchall()
import pymysql # 链接
conn = pymysql.connect(host='localhost',port=3306,user='root',password='',database='test',charset='utf8') # 创建游标对象
cursor = conn.cursor() # 默认返回元祖形式
# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 它返回的是一个字典 # 查操作,返回sql影响成功的行数rows,将结果放入一个集合,等待被查询
sql = "select * from ttt;"
rows = cursor.execute(sql) # 查询单个
res1=cursor.fetchone() # 查找出id是1的
res2=cursor.fetchone() # 查找出id是3的
print(res1)
print(res2) # 对rows进行操作,查找所有,注意这里的所有指的是id是3以后的了,光标已经移动了
rows = cursor.fetchall()
print(rows) conn.commit() # 提交语句,必须要有,别忘啊
cursor.close()
conn.close()
注意,当使用fetchone获取数据时,如果光标已经到最后一行,则会返回none,我们可以采用下面方式移动指针
cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
数据库可视化工具简介以及pymysql的使用的更多相关文章
- 数据库——可视化工具Navicat、pymysql模块、sql注入问题
数据库--可视化工具Navicat.pymysql模块.sql注入问题 Navicat可视化工具 Navicat是数据库的一个可视化工具,可直接在百度搜索下载安装,它可以通过鼠标"点点点&q ...
- Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...
- SQLite实现数据库的储存2+SQLite数据库可视化工具SQLite Stadio
今日所学 SQLite实现数据库的储存 查看数据库的两种方法 Android 中 SQLite 数据库的查看 - woider - 博客园 SQLite Studio安装教程 [SQLite]可视化工 ...
- mysql数据库可视化工具—Navicat Premium—安装与激活
一.Navicat premium简介 Navicat premium是一款数据库管理工具.将此工具连接数据库,你可以从中看到各种数据库的详细信息.包括报错,等等.当然,你也可以通过他,登陆数据库,进 ...
- redis数据库可视化工具(RedisDesktopManager)
RedisDesktopManager下载地址:https://redisdesktop.com/download 使用过程中可能会遇到的问题我在文后有所总结 我下载Windows版的: 我的redi ...
- mongoDb数据库可视化工具 --- Robo
工具下载: https://robomongo.org/download 最终效果: 即我们可以直接看到链接到 27017端口 的数据的所有数据,并且可以对其进行行之有效的增删查改. 注意,在下载软件 ...
- oracle数据库可视化工具
1.TreeSoft基于web网页方式,管理维护oracle数据,功能包括:SQL在线执行,数据在线维护管理,数据导出,数据交换同步等. 支持MySQL,Oracle,DB2,PostgreSQL,S ...
- Mac-Navicat Premium For Mac 12 破解 - [数据库可视化工具,亲测完美破解]
一.下面的公钥和私钥暂时存到文本编辑器中 公钥: -----BEGIN PUBLIC KEY-----MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQB8vXG0I ...
- MySQL py模块的链接Navicat可视化工具
数据库可视化工具Navicat 1 基本操作: 1 库 表 字段 记录(增删改查) 2 添加主建,添加自增. 3 添加外键,外键的链接 4 模型建表,模型添加外键.(逆向数据库到模型,运行SQL文件 ...
随机推荐
- stm32 定时器初步
今天学习STM32 的通用定时器:TIMx (TIM2.TIM3.TIM4 和 TIM5). 定时器比较复杂,功能繁多,这里我们就说最基本的计数功能. 1.定时器的时钟从哪里来? 定时器的时钟来源有 ...
- stm32 窗口看门狗学习(一)
什么是窗口看门狗? 1)独立看门狗 限制喂狗时间在0-x内,x由相关寄存器决定.喂狗的时间不能过晚. 2)窗口看门狗 之所以称为窗口就是因为其 ...
- contiki源码阅读之mmem.c
上次我们说了list,这次我们就借着mmem.c的代码来用一下这个链表. 代码目录是./core/lib/mmem.c 结构体定义如下 struct mmem { struct mmem *next; ...
- Scroller类的使用总结
Scroll类之所以不好理解是因为没有搞清楚View的绘制流程. 1)简单来讲 viewgroup重绘时依次会调用 dispatchDraw -- drawChild --child.compute ...
- 微信小程序可用的第三方库
1.wxDraw 轻量的小程序canvas动画库,专门用于处理小程序上canvas 的图形创建.图形动画,以及交互问题. 链接:http://project.ueflat.xyz/#/ 2.ZanUi ...
- php删除服务器所有session踢掉所有在线用户linux
注意:如果要删除服务器上所有session,重启php服务是解决不了问题的,php的session是持久化的. 有效解决办法: 删除 /tmp 下的所有文件(默认php的session文件是在/tmp ...
- 减少服务器压力php生成静态xml文件
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
- 使用UserLock如何实现工作站登陆访问限制
UserLock允许用户限制受保护账户可登陆的工作站/终端.工作站/终端限制可以通过设置或者使用特定的IP范围,计算机名/IP或组织单位实现. 对于每个工作站限制你需要指定所要限制的会话类型(默认情况 ...
- iOS 谓词(NSPredicate)的应用
Cocoa中谓词(Predicate)提供了一个通用的查询方式处理数据,可以获取和指定数据的过滤形式,Cocoa实际开发中可以是使用NSPredicate及其父类NSComparisonPredica ...
- yii网站未来改进
1.去掉debug模式 2.下载文件复选 3.文章发布.评论.赞.标签等系统