Navicat

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

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

网盘下载:https://pan.baidu.com/s/1bpo5mqj

需要掌握的基本操作

掌握:

1. 测试+链接数据库

2. 新建库

3. 新建表,新增字段+类型+约束

4. 设计表:外键

5. 新建查询

6. 备份库/表

#注意:

批量加注释:ctrl+?键

批量去注释:ctrl+shift+?键

pymysql模块

一 介绍

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

pip3 install pymysql

or

python -m pip install pymysql

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

 1 import pymysql
 2
 3 usr = input('user>>:').strip()
 4 pwd = input('password>>:').strip()
 5
 6 #建立链接
 7 conn = pymysql.connect(
 8     host = 'localhost',
 9     port = 3306,
10     user = 'root',
11     db = 'db10',
12     charset = 'utf8'
13 )
14
15 #拿到游标
16 cursor = conn.cursor()
17
18 #执行sql语句:
19 sql = 'select * from userinfo where user="%s" and pwd="%s"'%(usr,pwd) #注意%s需要加引号
20 print(sql)
21 rows=cursor.execute(sql)
22 print(rows)
23
24 cursor.close()
25 conn.close()
26
27 if rows:
28     print('登录成功')
29 else:
30     print('登录失败')

三 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的规矩来。

四 增、删、改: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()

五 查: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)
'''

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

import pymysql
conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')
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()

转载于:https://www.cnblogs.com/lukechenblogs/p/8807356.html

MySQL -Naivacat工具与pymysql模块相关推荐

  1. Navicat工具、pymysql模块

    Navicat工具.pymysql模块 阅读目录 一 IDE工具介绍 二 pymysql模块 一 IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用I ...

  2. 8-5 Navicat工具与pymysql模块

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

  3. navicat图形工具和pymysql模块的使用

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

  4. MySQL系列 数据备份 pymysql模块

    MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用于中 ...

  5. imooc的疯狂的蚂蚁的课程《Python操作MySQL数据库》 python3+pymysql模块来操作mysql数据库

    以下代码为imooc的疯狂的蚂蚁的课程<Python操作MySQL数据库>的python3版本的代码,使用的是pymysql模块来操作mysql数据库,代码与原课程有所改动,注意运行时需要 ...

  6. MySQL 联合查询实质_1.多表查询 = 转化为一张联合大表 2.可视化工具 3.pymysql模块...

    多表数据 create table dep( id int primary key auto_increment, name varchar(16), work varchar(16) ); crea ...

  7. mysql六:数据备份、pymysql模块

    阅读目录 一 MySQL数据备份 二 pymysql模块 一 MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备 ...

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

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

  9. mysql七个模块_mysql(pymysql模块的使用,视图,触发器)

    本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetchall 一.pymysql的下载和使 ...

最新文章

  1. table的td、th的一些样式问题(宽度,边框,滚动条)
  2. java setter_java – 如何获得@getter和@setter?
  3. algorithm头文件函数全集——史上最全,最贴心
  4. PopupMenu控件的使用
  5. [react] React Intl是什么原理?
  6. 测试学python路线_小蜗分享:Python测试开发全套学习路线
  7. 代码质量度量标准_Google研发度量改进实践
  8. 别再瞎学 Python 了!
  9. android 添加文件打开方式
  10. 怎么删除360base64.dll,这个方法百分百管用
  11. OverFeat 详解
  12. pycharm激活方法到2099年
  13. Face detection in color images, 彩色图像中的人脸检测
  14. 小程序实现商品详情页的tap标签与页面滚动联动效果
  15. 大学生月入过万的创业好项目——自媒体
  16. FFmpeg命令行,从小白入门到收藏吃灰——功能大全,总有你需要的!
  17. HDU oj wod sticks
  18. 一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏!
  19. 原神—薄樱初绽时(html+css+js仿原神2.5首页,前端课设)
  20. 商业 v. s. 自由 ——W*ndows v. s. 现代UNIX

热门文章

  1. eclipse部分快捷操作
  2. 开发板的I/O在哪里——韦东山嵌入式Linux视频学习笔记01
  3. Typora + PicGo + Gitee
  4. Python实例--文本词频统计
  5. Hi3516A开发--mpp业务分析
  6. GAN在Image To Image translation 和Inverse Problem中的应用
  7. Binder子系统之调试分析(三)
  8. cron 每年执行一次_循环执行定时任务crontab
  9. QGraphicsScene 的简单理解--关于手册的简要翻译
  10. Qt 2D painting Demo 的翻译