1 # 实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中)
 2
 3
 4 import pymysql
 5 # user = input('请输入用户名:')
 6 #
 7 # pwd = input('请输入密码:')
 8
 9
10
11 # 1.连接
12 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='sxl', charset='utf8')
13
14
15 # 2.创建游标
16 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
17
18 #注意%s需要加引号   有sql注入问题li' or 1=1 -- zdxv  或lijie' -- zdxv
19 # sql = "select * from userinfo where name='%s' and pwd='%s'" %(user, pwd)  #注意修改内容及表
20 # print(sql)
21 # #解决sql注入问题
22 # sql="select * from userinfo where name=%s and pwd=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
23 # result=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。
24
25 # 3.执行sql语句
26 # cursor.execute(sql)
27 # result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
28 # print(result)
29
30
31 # #1.增加数据
32 # sql = "insert into userinfo(name,pwd) values (%s,%s)"
33 # # effect_row = cursor.execute(sql,(123,123))
34 # #同时插入多条数据
35 # # effect_row = cursor.executemany(sql,[('李四','110'),('王五','119')])
36 # # print(effect_row)
37 # # 2.改
38 # sql = "update userinfo set name = %s  where id = 4"
39 # effect_row = cursor.execute(sql,'111')
40 # print(effect_row)
41 # # 3.删
42 # sql = "delete from userinfo  where id >13"
43 # effect_row = cursor.execute(sql)
44 # print(effect_row)
45 # 4.查
46 sql = 'select * from userinfo'
47 num = cursor.execute(sql)  #11
48 # # 4.1fetchone():获取下一行数据,第一次为首行;
49 # #查询第一行的数据
50 # row = cursor.fetchone()
51 # print(row) # (1, 'lijie', '123')
52 # # 查询第二行数据
53 # row = cursor.fetchone()
54 # print(row) # (3, 'zz', '123')
55 # 4.2fetchall():获取所有的数据
56 # rows = cursor.fetchall()
57 # print(rows) #((1, 'lijie', '123'), (3, 'zz', '123'), (5, '王五', '119'), (6, '123', '123'))
58 #注1:在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor,每一行的数据都会生成一个字典
59 #[{'id': 1, 'name': 'lijie', 'pwd': '123'}, {'id': 3, 'name': 'zz', 'pwd': '123'}, {'id': 5, 'name': '王五', 'pwd': '119'}, {'id': 6, 'name': '123', 'pwd': '123'}]
60 # #注2:在fetchone示例中,在获取行数据的时候,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能再获取到行的内容,所以我们可以使用如下方法来移动行指针:
61 # cursor.scroll(1,mode='relative')  # 相对当前位置移动
62 # cursor.scroll(3,mode='absolute') # 相对绝对位置移动 以第一行为参考
63 # # 第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
64 row = cursor.fetchone()
65 print(row) # {'id': 1, 'name': 'lijie', 'pwd': '123'}  原始数据是135678
66 cursor.scroll(1,mode='relative')
67 row = cursor.fetchone()
68 print(row) # {'id': 5, 'name': '王五', 'pwd': '119'}
69 cursor.scroll(0,mode='absolute') #设置之后,光标相对于首行没有任何变化,所以打印的结果为第一行数据
70 row = cursor.fetchone()
71 print(row) # {'id': 1, 'name': 'lijie', 'pwd': '123'}
72 cursor.scroll(1,mode='absolute')
73 row = cursor.fetchone()
74 print(row) # {'id': 3, 'name': 'zz', 'pwd': '123'}
75 cursor.scroll(-1,mode='relative') #设置之后,光标相对于当前位置往前移动了一行
76 row = cursor.fetchone()
77 print(row) # {'id': 3, 'name': 'zz', 'pwd': '123'}
78 #4.3 fetchmany(4):获取4行数据
79 # row = cursor.fetchmany(2)
80 # print(row) # [{'id': 1, 'name': 'lijie', 'pwd': '123'}, {'id': 3, 'name': 'zz', 'pwd': '123'}]
81
82
83
84 #在数据库里增、删、改的时候,一定记得commit
85 conn.commit()
86
87
88
89
90
91 # 关闭连接,游标和连接都要关闭
92 cursor.close()
93 conn.close()
94
95 # if result:
96 #     print('登陆成功')
97 # else:
98 #     print('登录失败')

转载于:https://www.cnblogs.com/lijie123/p/9392899.html

day15-pymysql模块的使用相关推荐

  1. MySQL之pymysql模块

    PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数 ...

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

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

  3. Mysql: pymysql 模块

    import pymysql #导入pymysql模块client=pymysql.connect( #与服务端建立连接 host='127.0.0.1', port=3306, user='root ...

  4. 5.15 pymysql 模块

    pymysql 模块 安装 pip3 install pymysql 链接,执行sql,关闭(游标) import pymysql user= input('用户名:>>').strip( ...

  5. pymysql模块操作数据库及连接报错解决方法

    pymysql模块操作数据库及连接报错解决方法 参考文章: (1)pymysql模块操作数据库及连接报错解决方法 (2)https://www.cnblogs.com/zgngg/p/10607859 ...

  6. Navicat工具、pymysql模块

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

  7. 利用PyMySQL模块操作数据库

    连接到数据库 import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址 ...

  8. 权限管理,pymysql模块

    权限管理 权限管理重点 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL ...

  9. MySQL -Naivacat工具与pymysql模块

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

  10. mysql用户管理+pymysql模块

    mysql 用户管理 Mysql 是一个tcp 服务器 用于接收用户端发送的指令,操作服务器上的文件数据 在mysql自带的mysql数据库中有4个表用于用户管理的 分别是: 优先级从高到低 user ...

最新文章

  1. Apache ‘mod_pagespeed’模块跨站脚本漏洞
  2. 目标检测基本概念理解之IoU(交并比)以及Python代码实现
  3. VTK:彩色注释立方体用法实战
  4. onenote复制出来是图片_你真的了解 OneNote 吗?
  5. 厦门理工C语言实验报告8,厦门理工c语言数据结构实验
  6. Kafka核心源码解析 - KafkaApis源码解析
  7. 【hortonworks/registries】SchemaVersionLifecycleManager.createSchemaVersion null
  8. 完全关闭App的两种做法
  9. ubuntu mysql 编译_Ubuntu下mysql编译安装
  10. deepfacelab安卓版_DeepFaceLab2020版本下载
  11. 百度自动php推送蜘蛛怎么不来访问,使用代码向百度蜘蛛主动推送链接
  12. 淘宝联盟官方APi在小程序云函数中的使用教程(附案例)
  13. 深入理解操作系统实验——bomb lab(secret_phase)
  14. FFT(快速傅里叶变换)摘要
  15. java for无限循环
  16. lp_solve 线性规划求解包的使用
  17. 2022年美国大学生数学建模(MCM/ICM)C题:量化交易策略
  18. oracle时间平均,Oracle SQL的平均时间
  19. itextpdf 5.5.6版本生成pdf文件 字体设置三种方式
  20. 中华象思维的算法特征与逻辑基础

热门文章

  1. MySQL存储结构的使用
  2. 2020 我的C++学习之路 C++PrimerPlus第五章课后习题
  3. c语音 udp最大长度_c语言udp自定义头文件 网络通信程序
  4. nodejs实现的高性能服务器编程,使用NodeJS搭建自己的接口服务器,提交APP的开发效率...
  5. 怎么通过华为三层交换机实现VLAN间通信?
  6. 历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?
  7. 分布式系统架构与云原生—阿里云《云原生架构白皮书》导读
  8. 空间地理加权回归stata_xy妙妙屋丨地理加权回归和空间自相关
  9. python import requests报错_import requests 出错,搜了很多,没解决,求教.
  10. matlab中线性变压器,用MATLAB优化计算差动变压器的线性范围