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的使用的更多相关文章

  1. 数据库——可视化工具Navicat、pymysql模块、sql注入问题

    数据库--可视化工具Navicat.pymysql模块.sql注入问题 Navicat可视化工具 Navicat是数据库的一个可视化工具,可直接在百度搜索下载安装,它可以通过鼠标"点点点&q ...

  2. Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04下Mongodb官网安装部署步骤(图 ...

  3. SQLite实现数据库的储存2+SQLite数据库可视化工具SQLite Stadio

    今日所学 SQLite实现数据库的储存 查看数据库的两种方法 Android 中 SQLite 数据库的查看 - woider - 博客园 SQLite Studio安装教程 [SQLite]可视化工 ...

  4. mysql数据库可视化工具—Navicat Premium—安装与激活

    一.Navicat premium简介 Navicat premium是一款数据库管理工具.将此工具连接数据库,你可以从中看到各种数据库的详细信息.包括报错,等等.当然,你也可以通过他,登陆数据库,进 ...

  5. redis数据库可视化工具(RedisDesktopManager)

    RedisDesktopManager下载地址:https://redisdesktop.com/download 使用过程中可能会遇到的问题我在文后有所总结 我下载Windows版的: 我的redi ...

  6. mongoDb数据库可视化工具 --- Robo

    工具下载: https://robomongo.org/download 最终效果: 即我们可以直接看到链接到 27017端口 的数据的所有数据,并且可以对其进行行之有效的增删查改. 注意,在下载软件 ...

  7. oracle数据库可视化工具

    1.TreeSoft基于web网页方式,管理维护oracle数据,功能包括:SQL在线执行,数据在线维护管理,数据导出,数据交换同步等. 支持MySQL,Oracle,DB2,PostgreSQL,S ...

  8. Mac-Navicat Premium For Mac 12 破解 - [数据库可视化工具,亲测完美破解]

    一.下面的公钥和私钥暂时存到文本编辑器中 公钥: -----BEGIN PUBLIC KEY-----MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQB8vXG0I ...

  9. MySQL py模块的链接Navicat可视化工具

     数据库可视化工具Navicat 1 基本操作: 1 库 表 字段 记录(增删改查) 2 添加主建,添加自增. 3 添加外键,外键的链接 4 模型建表,模型添加外键.(逆向数据库到模型,运行SQL文件 ...

随机推荐

  1. JVM调优总结-Xmx -Xms -Xmn -Xss

    堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作 ...

  2. zabbix--高级篇-监控docker服务(一)

    一,配置zabbix 客户端环境 rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix//x86_64/zabbix-release-.el7.noarc ...

  3. Dropping Balls UVA - 679(二叉树的遍历)

    题目链接:https://vjudge.net/problem/UVA-679 题目大意:t组样例,每组包括D M   层数是D   问第M个小球落在哪个叶子节点?    每个节点有开关  刚开始全都 ...

  4. DP:凑零钱问题/最长非降子序列(C++)

    你给出一定数额的钱 i 元给我,我利用手中的硬币(m元, j元, k元...)兑换等值的钱给你,要求硬币数最少. 举例:给出1-11的钱,手中硬币有1元,3元,5元. 重点是找到状态和状态转移方程. ...

  5. DevExtreme 搭建Node.js开发环境

    简介 DevExtreme is a component suite for creating highly responsive web applications for touch devices ...

  6. 硬盘的基础知识-SSD

    硬盘有三类:HDD(机械硬盘),SSD(固态硬盘),HHD(混合硬盘) 原理: HDD:磁性碟片 SSD: 闪存颗粒 HHD:磁性碟片的基础上加上了闪存颗粒. 这里对HDD,HHD不加说明,只对SSD ...

  7. hdu 3586 最小代价切断根与叶子联系

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 http://blog.csdn.net/woshi250hua/article/details ...

  8. intellijidea课程 intellijidea神器使用技巧 4-2 抽取

    1 抽取变量 Ctrl alt V 抽取变量 Ctrl alt C 抽取静态变量  顺带创建静态方法 Crrl alt F 抽取成员变量 2 抽取方法参数 Ctrl alt P 抽取参数,到方法体中 ...

  9. JavaScript new 操作符 OOP(一)

    什么是对象    对象是单个实物的抽象,通常需要一个模板,表示某一类实物的共同特征,然后对象根据这个模板生成. 对象是一个容器,封装了属性(property)和方法(method),属性是对象的状态, ...

  10. The sixteenth day

    It is a against the law to drive without a driver's license 翻译: 没有驾照,开车是违法的 注意点: 1.It(连读)is; witout( ...