Python学习日记(三十七) Mysql数据库篇 五
pymsql的使用
初识pymysql模块
先在数据库中创建一个用户信息表,里面包含用户的ID、用户名、密码
- create table userinfo(
- uid int not null auto_increment primary key,
- username varchar(32),
- pwd varchar(32)
- )engine = innodb default charset=utf8;
增加一个用户的信息:
- insert into userinfo(username,pwd) values('jxson','a123');
用pymysql模块从数据库拿到用户信息模拟登陆效果:
- import pymysql
- user = input('username:') #输入用户的名字
- pwd = input('password:') #输入用户的密码
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1') #连接数据库
- cursor = conn.cursor() #cursor是一个游标 去帮我们获取数据
- sql_search = "select * from userinfo where username='%s' and pwd='%s'" %(user,pwd,) #SQL语句
- cursor.execute(sql_search) #执行SQL语句
- get_one = cursor.fetchone() #拿一组数据
- cursor.close() #关闭游标
- conn.close() #关闭连接
- if get_one: #判断是否有拿到数据
- print("登陆成功!")
- print(get_one)
- else:
- print("登陆失败!")
执行结果:
- username:jxson
- password:a123
- 登陆成功!
- (1, 'jxson', 'a123')
防止SQL注入的改进方法
1.
- sql_search = "select * from userinfo where username=%s and pwd=%s"
- cursor.execute(sql_search,user,pwd)
2.列表的表示方式
- sql_search = "select * from userinfo where username=%s and pwd=%s"
- cursor.execute(sql_search,[user,pwd])
3.字典的表示方式
- sql_search = "select * from userinfo where username=%(u)s and pwd=%(p)s"
- cursor.execute(sql_search,{'u' : user,'p' : pwd})
增、删、改、查
增、删、改:
增、删、改都需要commit(),以增为举例
增加单个
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor()
- sql_insert = "insert into userinfo(username,pwd) values('abc','666')"
- cursor.execute(sql_insert)
- conn.commit()
- cursor.close()
- conn.close()
增加多个:
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor()
- sql_insert = "insert into userinfo(username,pwd) values(%s,%s)"
- cursor.executemany(sql_insert,[('hylisang','a123'),('HSI15','47a8'),('asw2','')])
- conn.commit()
- cursor.close()
- conn.close()
output:
查:
1.fetchone()
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor()
- sql = "select * from userinfo"
- cursor.execute(sql)
- result1 = cursor.fetchone()
- print(result1)
- result2 = cursor.fetchone()
- print(result2)
- cursor.close()
- conn.close()
执行结果:
- (1, 'jxson', 'a123')
- (6, 'abc', '')
2.fetchmany(n),一次取n条数据
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor()
- sql = "select * from userinfo"
- cursor.execute(sql)
- result1 = cursor.fetchmany(3)
- print(result1)
- cursor.close()
- conn.close()
执行结果:
- ((1, 'jxson', 'a123'), (6, 'abc', ''), (7, 'hylisang', 'a123'))
3.fetchall(),一次取全部SQL语句查到的数据
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor()
- sql = "select * from userinfo"
- cursor.execute(sql)
- result1 = cursor.fetchall()
- print(result1)
- cursor.close()
- conn.close()
执行结果:
- ((1, 'jxson', 'a123'), (6, 'abc', ''), (7, 'hylisang', 'a123'), (8, 'HSI15', '47a8'), (9, 'asw2', ''))
把结果转化为字典的格式:
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
- sql = "select * from userinfo"
- cursor.execute(sql)
- result1 = cursor.fetchall()
- print(result1)
- cursor.close()
- conn.close()
执行结果:
- [{'uid': 1, 'username': 'jxson', 'pwd': 'a123'}, {'uid': 6, 'username': 'abc', 'pwd': ''}, {'uid': 7, 'username': 'hylisang', 'pwd': 'a123'},
{'uid': 8, 'username': 'HSI15', 'pwd': '47a8'}, {'uid': 9, 'username': 'asw2', 'pwd': ''}]
4.控制游标来获取数据
- cursor.scroll(1,mode='relative') #根据当前位置相对位移
- cursor.scroll(2,mode='absolute') #绝对位置移动
查看新插入数据的自增ID
如果添加多笔数据再去查询,那查到的ID是最后一条
- import pymysql
- conn = pymysql.connect(host ='localhost',user = 'root',password = '',database = 'db1')
- cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
- sql_insert = "insert into userinfo(username,pwd) values('abc','666')"
- cursor.execute(sql_insert)
- print(cursor.lastrowid)
- conn.commit()
- cursor.close()
- conn.close()
Python学习日记(三十七) Mysql数据库篇 五的更多相关文章
- Python学习日记(三十三) Mysql数据库篇 一
背景 Mysql是一个关系型数据库,由瑞典Mysql AB开发,目前属于Oracle旗下的产品.Mysql是目前最流行的关系型数据库管理系统之一,在WEB方面,Mysql是最好的RDBMS(Relat ...
- Python学习日记(四十) Mysql数据库篇 八
Mysql存储过程 存储过程是保存在Mysql上的一个别名(就是一堆SQL语句),使用别名就可以查到结果不用再去写SQL语句.存储过程用于替代程序员写SQL语句. 创建存储过程 delimiter / ...
- Python学习日记(四十一) Mysql数据库篇 九
前言 索引的主要作用是起到约束和加速查找,ORM框架(sqlalchemy)是用类和对象对数据库进行操作 索引的种类 按种类去分 1.普通索引:能够加速查找 2.主键索引:能够加速查找.不能为空.不能 ...
- Python学习日记(三十六) Mysql数据库篇 四
MySQL作业分析 五张表的增删改查: 完成所有表的关系创建 创建教师表(tid为这张表教师ID,tname为这张表教师的姓名) create table teacherTable( tid int ...
- Python学习笔记9-Python 链接MySql数据库
Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...
- python学习笔记之——操作mysql数据库
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...
- Python学习日记(三十八) Mysql数据库篇 六
Mysql视图 假设执行100条SQL语句时,里面都存在一条相同的语句,那我们可以把这条语句单独拿出来变成一个'临时表',也就是视图可以用来查询. 创建视图: CREATE VIEW passtvie ...
- Python学习日记(三十九) Mysql数据库篇 七
Mysql函数 高级函数 1.BIN(N) 返回N的二进制编码 ); 执行结果: 2.BINARY(str) 将字符串str转换为二进制字符串 select BINARY('ASCII'); 执行结果 ...
- Python学习日记(三十五) Mysql数据库篇 三
使用Navicate 创建一个连接去使用Mysql的数据库,连接名可以取任意字符但是要有意义 新增一个数据库 填写新数据库名,设置它的字符集和排序规则 新建一个表 增加表中的信息 点击保存再去输入表名 ...
随机推荐
- Java class 和public class 区别
1.类的访问权限 为了控制某个类的访问权限,修饰词必须出现在关键字class之前.例如:public class Student {} 在编写类的时候可以使用两种方式定义类: (A)pub ...
- mac下编程使用字体
1.xcode下使用的是Menlo的18号字体 2.webStorm使用的也是Menlo的18号字体 3.sublime Text 使用的也是Menlo的21号字体
- Linux tty驱动架构
Linux tty子系统包含:tty核心,tty线路规程和tty驱动.tty核心是对整个tty设备的抽象,对用户提供统一的接口,tty线路规程是对传输数据的格式化,tty驱动则是面向tty设备的硬件驱 ...
- 热点Key问题的发现与解决
热点问题概述 产生原因 热点问题产生的原因大致有以下两种: 用户消费的数据远大于生产的数据(热卖商品.热点新闻.热点评论.明星直播). 在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的 ...
- c# 3d图像显示
1.应用directx图形库进行开发: 2.代码: public class TClass : System.Windows.Forms.Form { /// <summary> /// ...
- Markdown 编辑器指南
一直觉得博客园默认的编辑器不好用,后来了解了Markdown,并且博客园也支持Markdown标记,所以写篇博客总结下. 一.认识 Markdown Markdown 是一种用来写作的轻量级「标记语言 ...
- Linux简介和各发行版介绍
一.Linux 简介 Linux 内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在大学上学时出于个人爱好而编写的. Linux 是一套免费使用和自由传播的类 Unix 操作系统,是 ...
- Jenkins绑定git
1,新建任务
- python 基础 ---- 文件读写
文件是一种存储在存储存储媒介上的信息或数据 常用的文件类型 文件 的打开关闭 close() 关闭文件 文件的打开路径 绝对路径 : 文件在操作系统中标准的存放路径 相对路径: 与目前引用文件的相对位 ...
- [转帖]程序员:我终于知道post和get的区别
程序员:我终于知道post和get的区别 置顶 2019-11-14 00:03:09 zhanglinblog 阅读数 15316 文章标签: post和get的区别程序员 更多 分类专栏: .ne ...