一.可视化工具Navicat的使用

1.官网下载:http://www.navicat.com/en/products/navicat-for-mysql

2.网盘下载:http://pan.baidu.com/s/1bpo5maj

3.需要掌握的基本操作:

  1.  

PS:在生产环境中操作MySQL数据库还是推荐使用命令工具mysql,但我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库

二.pymysql模块的使用

1.pymysql的下载和使用

之前我们都是通过MySQL自带的命令行客户端mysql来操作数据库,那如何在python程序中操作数据库呐?这就用到了pymysql模块,该模块的本质就是一个套接字客户端软件,使用前需要事先安装

(1).pymysql模块的下载

  1. pip3 install pymysql

(2).pymysql的使用(数据库和数据都已存在)

2.execute()之sql注入

  1. #最后那一个空格,在一条sql语句中如果select * from userinfor where username = "wahaha" -- asadsadf" and pwd = "" 则--之后的条件被注释掉了(注意--后面还有一个空格)
  2.  
  3. #1.sql注入之:用户存在,绕过密码
  4. wahaha" -- 任意字符
  5. #2.sql注入之:用户不存在,绕过用户与密码
  6. xxx" or 1=1 -- 任意字符

(1).解决方法:

  1. #原来是我们自己对sql字符串进行拼接
  2. #sql = "select * from userinfo where username='%s' and pwd='%s'" %(user, pwd)
  3. #print(sql)
  4. #result = cursor.execute(sql)
  5.  
  6. #该写为(execute帮我们做好的字符串拼接,我们无需且一定不要再为%s加引号了)
  7. sql = "select * from userinfor where name = %s and password = %s" #注意%s需要去掉引号,因为pymysql会自动帮我们加上
  8. result = cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来

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

commit()方法: 在数据库里增,删,改的时候,必须要进行提交,否则插入的数据不生效

  1. import pymysql
  2. #连接
  3. conn = pymysql.connect(host = "localhost", port = 3306, user = "root", password = "", db = "db8", charset = "utf8")
  4.  
  5. #创建游标
  6. cursor = conn.cursor()
  7.  
  8. # #增:
  9. # sql = "insert into userinfor(name,pwd) values (%s,%s)"
  10. # ope_data = cursor.execute(sql,(user,pwd))
  11. #
  12. # #同时插入多条数据
  13. # # cursor.executemany(sql,[("乳娃娃","111"),("爽歪歪","222")])
  14. # print(ope_data)
  15.  
  16. # #删
  17. # sql = "delete from userinfor where id = 2"
  18. # ope_data = cursor.execute(sql)
  19. # print(ope_data)
  20.  
  21. # #改
  22. # user = input("输入新的用户名:")
  23. # sql = "update userinfor set name = %s where id = 4"
  24. # ope_data = cursor.execute(sql,user)
  25. # print(ope_data)
  26.  
  27. #一定要记得commit
  28. conn.commit()
  29.  
  30. #关闭游标
  31. cursor.close()
  32. #关闭连接
  33. conn.close()

4.查:fetchone,fetchmany,fetchall

  1. fetchone():获取下一行数据,第一次为首行
  2. fetchall():获取所有行数据源
  3. fetchmany(4):获取4行数据

(1).表中内容

(2).使用fetchone():

(3).使用fetchall():

默认情况下,我们获取到的返回值是一个元组,只能看到每行的数据,却不知道没列代表的是什么,这个时候可以使用以下方式来返回字典,每行的数据都会生成一个字典:

  1. #返回字典
  2. #在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor
  3. cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

在fetchone示例中,在获取行数据的时候,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能再获取到行的内容,所以我们可以使用如下方法来移动行指针:

  1. cursor.scroll(1,mode='relative') # 相对当前位置移动
  2. cursor.scroll(2,mode='absolute') # 相对绝对位置移动
  3. 第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动

(4).使用fetchmany():

  1. import pymysql
  2.  
  3. conn = pymysql.connect(host = "localhost", port = 3306, user = "root", password = "", db = "db8", charset = "utf8")
  4. cursor = conn.cursor(cursor = pymysql.cursors.DictCursor)
  5.  
  6. sql = "select * from userinfor"
  7. cursor.execute(sql)
  8.  
  9. #获取两条数据
  10. rows = cursor.fetchmany(2)
  11. print(rows)
  12.  
  13. #关闭游标
  14. cursor.close()
  15. #关闭连接
  16. conn.close()
  17.  
  18. # 结果:
  19. [{'id': 1, 'name': 'wahaha', 'pwd': '123'}, {'id': 2, 'name': '冰红茶', 'pwd': '111'}]

给大家推荐一位博主,他写的很认真:https://www.cnblogs.com/rixian/

可视化工具Navicat的使用/pymysql模块的使用的更多相关文章

  1. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)

    昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...

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

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

  3. 可视化工具Navicat的使用

    可视化工具Navicat的使用 掌握Navicat的基本使用 # PS:在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图 ...

  4. mysql更新(八) 可视化工具Navicat的使用 索引

    17-索引   一.索引的介绍 数据库中专门用于帮助用户快速查找数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置吗,然后直接获取. 二 .索引的作用 约束和加速查 ...

  5. MySQL数据库(4)- 多表查询、可视化工具Navicat的使用、设计模式MVC

    一.多表查询 准备工作:创建两张表,部门表(department).员工表(employee),代码和表格如下: # 创建表 create table department( id int, name ...

  6. mysql(单表查询,多表查询,MySQl创建用户和授权,可视化工具Navicat的使用)

    单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT ...

  7. 15 可视化工具 Navicat的简单使用

    本节重点: 掌握Navicat的基本使用 # PS:在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作My ...

  8. day43——多表查询、Navicat工具的使用、pymysql模块

    day43 多表查询 笛卡尔积--不经常用 将两表所有的数据一一对应,生成一张大表 select * from dep,emp; # 两个表拼一起 select * from dep,emp wher ...

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

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

随机推荐

  1. 使用PM2管理nodejs进程分享

    摘要:pm2 是一个带有负载均衡功能的Node应用的进程管理器.本文主要介绍了详解使用PM2管理nodejs进程,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助 ...

  2. koa1创建项目

    1.一定要全局安装(koa1.2和koa2都己经支持)npm install koa-generator -g 2.koa1.2 生成一个test项目,切到test目录并下载依赖 koa testcd ...

  3. MinimumTours TopCoder - 7620

    Problem Statement      Little Bonnie has taken a vacation to Ha Long Bay. There are a few thousand s ...

  4. 拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)

    这是到动态规划的题目,属于有顺序的0 1 背包问题: 代码: #include<stdio.h> #include<string.h> ][]; //d[i][j] ]; in ...

  5. BOX (UVA-1587) 比较代码书写上的差距

    对比一下代码的书写差距: 我的代码: #include<iostream> using namespace std; ]; ]; ]; //访问标记 bool judge(int i, i ...

  6. redis系列:主从复制

    1 简介 这篇文章主要讲述Redis的主从复制功能.会依次从环境搭建.功能测试和原理分析几个方面进行介绍. 2 准备工作 服务器架构图如下 启动主服务器101,使用info replication命令 ...

  7. Django 之 auth 模块

    Django 内置一个 auth 模块,帮助用户实现注册.登录.注销以及修改密码等功能,帮助开发者省去了很多功夫. auth 模块 在创建模型时,Django内部会生成一个名为 auth_user 的 ...

  8. 【Spring-任务调度】

    Spring-任务调度: spring内部有一个task是Spring自带的一个设定时间自动任务调度task使用的时候很方便,但是他能做的东西不如quartz那么的多!可以使用注解和配置两种方式,配置 ...

  9. 使用 typescript ,提升 vue 项目的开发体验(2)

    此文已由作者张汉锐授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. vuex-class 提供了和 vuex 相关的全部装饰器,从而解决了上面 Vue.extend + vue ...

  10. React 从入门到进阶之路(三)

    之前的文章我们介绍了 React 创建组件.JSX 语法.绑定数据和绑定对象.接下来我们将介绍 React 绑定属性( 绑定class  绑定style).引入图片  循环数组渲染数据. 上一篇中我们 ...