Python操作MySQL之查看、增删改、自增ID
在python中用pymysql模块来对mysql进行操作,该模块本质就是一个套接字客户端软件,使用前需要事先安装,在cmd中输入:
pip3 install pymysql
1、查看
import pymysql
user = input("username:")
pwd = input("password:")
conn = pymysql.connect(host="localhost",user='root',password='',database="db666") # 创建连接
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 创建游标,设置打印结果以列表套字典的形式显示出来
sql = "select * from userinfo where username='%s' and password='%s'" %(user,pwd,)
effect_row=cursor.execute(sql) # 执行SQL,并返回收影响行数
result = cursor.fetchone() #只拿第一条数据
#result=cursor.fetchmany(n) #一次取n条数据
#result=cursor.fetchall() #取sql语句全部查到的数据(分页显示数据的时候)
cursor.close() # 关闭游标
conn.close() # 关闭连接
if result:
print('登录成功') print(result)
else:
print('登录失败')
#打印结果:
#username:alex
#password:123
#登录成功
#(1, 'alex', '123')
在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:
- cursor.scroll(1,mode='relative') # 相对当前位置移动
- cursor.scroll(2,mode='absolute') # 相对绝对位置移动
2、execute()防注入问题
问题:在navicat for MySQL中,--符号属于注释符,会注释后后面的sql语句,这样会对登陆造成影响:绕过密码,直接登陆



解决办法:
#把
sql = "select * from userinfo where username='%s' and password='%s'" %(user,pwd,)
cursor.execute(sql) #替换为
sql = "select * from userinfo where username=%s and password=%s" %(user,pwd,)
cursor.execute(sql,user,pwd) #execute会帮我们做字符串拼接,推荐这种写法
3、增、删、改
# 增加单条数据
#方式一
import pymysql
conn=pymysql.connect(host="localhost",user='root',password='',database="db666")
cursor = conn.cursor()
sql = "insert into userinfo(username,password) values('root','123123')"
r=cursor.execute(sql) #执行sql语句,r表示返回的受影响的行数
conn.commit()
cursor.close()
conn.close() #方式二
user="'aaaa"
pwd=""
import pymysql
conn=pymysql.connect(host="localhost",user='root',password='',database="db666")
cursor = conn.cursor()
sql = "insert into userinfo(username,password) values(%s,%s)"
r=cursor.execute(sql,(user,pwd,))
conn.commit()
cursor.close()
conn.close() #增加多条数据
import pymysql
conn=pymysql.connect(host="localhost",user='root',password='',database="db666")
cursor = conn.cursor()
sql = "insert into userinfo(username,password) values(%s,%s)"
r = cursor.executemany(sql,[('egon','sb'),('laoyao','BS')]) #executemany增加多个值,只在insert中使用
conn.commit()
cursor.close()
conn.close()
删和改只需把sql语句改为:
#修改
sql = "update userinfo set password="446" where username="alex"
#删除
sql = "delete from userinfo where username="alex"
4、新插入数据的自增ID:cursor.lastrowid
import pymysql conn = pymysql.connect(host="localhost",user='root',password='',database="db666")
cursor = conn.cursor()
sql = "insert into userinfo(username,password) values('asdfasdf','123123')"
cursor.execute(sql)
conn.commit()
print(cursor.lastrowid) #获取自增ID号
cursor.close()
conn.close() #r如果插入多条数据,cursor.lastrowid显示的是最后一条的ID
练习题:
基于用户权限管理
参考表结构: 用户信息
id username pwd
1 alex 123123 权限
1 订单管理
2 用户劵
3 Bug管理
.... 用户类型&权限
1 1
1 2
2 1
3 1
程序:
用户登录 基于角色的权限管理 用户信息
id username pwd role_id
1 alex 123123 1
2 eric 123123 1 权限
1 订单管理
2 用户劵
3 Bug管理
.... 角色表:
1 IT部门员工
2 咨询员工
3 IT主管 角色权限管理
1 1
1 2
3 1
3 2
3 3 ===>
1. 基于角色的权限管理
2. 需求分析
exercise
Python操作MySQL之查看、增删改、自增ID的更多相关文章
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...
- python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)
python操作mysql⑥新闻管理后台功能的完善(增.删.改.查)安装表单验证D:\python\python_mysql_redis_mongodb\version02>pip instal ...
- python 操作 mysql基础补充
前言 本篇的主要内容为整理mysql的基础内容,分享的同时方便日后查阅,同时结合python的学习整理python操作mysql的方法以及python的ORM. 一.数据库初探 在开始mysql之前先 ...
- python接口自动化(三十八)-python操作mysql数据库(详解)
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
- Python操作MySQL以及数据库索引
目录 python操作MySQL 安装 使用 SQL注入问题 MySQL的索引 为什么使用索引 索引的种类 主键索引 唯一索引 普通索引 索引优缺点 不会命中索引的情况 explain 索引覆盖 My ...
- day40:python操作mysql:pymysql模块&SQL注入攻击
目录 part1:用python连接mysql 1.用python连接mysql的基本语法 2.用python 创建&删除表 3.用python操作事务处理 part2:sql注入攻击 1.s ...
- python操作MySQL、事务、SQL注入问题
python操作MySQL python中支持操作MySQl的模块很多 其中最常见就是'pymysql' # 属于第三方模块 pip3 install pymysql # 基本使用 import py ...
随机推荐
- D 楼房重建
时间限制 : - MS 空间限制 : - KB 评测说明 : 1s,256m 问题描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊 ...
- 面试刷题32:你对tomcat做了哪些性能调优?
背景 java程序员的开发的java应用程序,一般都会选择使用tomcat发布,但是: 如何充分的掌控tomcat,并让它发挥最优性能呢? 这也是面试的热点问题,结合多年的工作实践,我是李福春,今天总 ...
- 【Java技术系列】爱情36技之Bug大战
1. 鲁迅先生说:程序员,天不怕地不怕,就怕小虫儿爬呀爬,爬呀爬. 随着时间的推移,鲁迅先生又说:真正勇猛的程序员,敢于让虫子面对惨淡的虫生. 虫子在程序员心中是啥东西?虫子的学名为 Bug,是多少入 ...
- 自动由@3x图片生成@2x和@1x的图片 - Xcode插件
原文:http://www.cocoachina.com/bbs/read.php?tid=277187 生成@3x图片对应的@2x和@1x版本--RTImageAssets 关键字:Xcode插件, ...
- CTF中常用的php伪协议利用
1.file:// 作用: 用于访问文件(绝对路径.相对路径.网络路径) 示例: http://www.xx.com?file=file:///etc/passsword 2.php:// 作用:访问 ...
- Python 参数使用总结
Python 中参数的传递非常灵活,不太容易记住理解,特整理如下备忘: 普通参数 即按照函数所需的参数,对应位置传递对应的值,可以对应 Java 中的普通参数 def max(a, b): if a ...
- php 分页使用limit还是用mysql_data_seek()呢?
目前大部分教程中介绍的时LIMIT方法,使用这种方法要认识到以下几点: (1)limit不是标准的sql语句; (2)如果选择使用limit,那么您就必须首先向数据库发送一个查询语句来获取记录的总数, ...
- 【php】错误日志处理
一. 错误处理: a) 在写程序的过程当中,遇到错误时,你的反应?可能比较急躁,比较烦 b) 遇到错误后:一别哭,二别闹,三别上吊,四别尿……二. 你可能会遇到的错误: a) 语法错误 i. 语法错误 ...
- HDFS程序开发
占位
- 【物理】AABB物理碰撞检测
什么是AABB? AABB,指轴对齐包围盒(Axis-aligned bounding boxes).在3D空间中,AABB是一个长方体,在2D空间中是一个长方形.特征是面法线皆平行于坐标轴,即当物体 ...