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. Mybatis学习笔记4 - 获取自增主键的值

    获取自增主键的值:mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys():useGeneratedKeys="true&qu ...

  2. Android中的下拉列表

    在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交 ...

  3. javascrip学习之基础

    弹窗信息:三种消息框:警告框.确认框.提示框. window.alert("sometext"); var r=confirm("按下按钮");//提示信息,返 ...

  4. RTT设备与驱动之硬件定时器

    硬件定时器可以对外部时钟进行计数,利用内部时钟进行定时. 函数 描述 rt_device_t rt_device_find(const char* name); 查找定时器设备 rt_err_t rt ...

  5. Django 中orm的第一次举荐

    Django ORM :对象--关系--映射 创建Django准备工作: 1.在数据库创建你需要的数据库 2.在项目models里创建模型(就是python写的类,也可以说是python写的数据库) ...

  6. 前台js escape及后台C# Server.UrlEncode 对QueryString传参的含~!@#$%^&*等特殊字符的处理

    通常情况下,我们在List列表页面,会包含Create,Edit,Delete等操作按钮, 而通常的处理是: Create按钮跳转到DataCreate.aspx Edit按钮跳转到DataEdit. ...

  7. .NET标准化题目

    1. 下面对FxCop的描述中,错误的是:(D) A. FxCop是一个静态代码分析工具. B. 可以定制自己的规则加入FxCop引擎. C. FxCop主要是对.NET中托管代码的assembly进 ...

  8. npm EPERM: operation not permitted, rename解决

    此问题并非权限问题! 执行如下3条命令解决: 1.清理npm缓存 npm cache clean --force 2.升级npm版本 npm install -g npm@latest --force ...

  9. ACM-单调队列

    对于单调队列的基本概念可以去看百科里的相关介绍:http://baike.baidu.com/view/3771451.htm 这里挑一些重点. 作用: 不断地向缓存数组里读入元素,也不时地去掉最老的 ...

  10. Python中的循环体

    一.循环 1.while语句: while 条件: 循环体 else: 当上面的条件不成立时才会执行 执行顺序:判断条件是否为真.如果为真,执行循环体,再次判断条件如果为假,执行else下代码块 2. ...