python连接mysql的客户端

  1. import pymysql # 导入模块
  2. conn = pymysql.connect(
  3. host='127.0.0.1', # 主机模块
  4. port=3306, # 端口号
  5. user='root',# 用户名
  6. password='123', # 密码
  7. database='db', # 需要连接的库
  8. charset='utf8' # 指定编码utf8
  9. )
  10. cursor = conn.cursor() # 获取游标
  11. # cursor = conn.cursor(pymysql.cursors.DictCursor) # 获取的查询结果更加规范化 便于分辨
  12. sql = "select * from dep;"
  13. ret = cursor.execute(sql) # ret 受影响的行数
  14. # res = cursor.executemany(sql,[(a,b),(a1,b1),(a2,b2)]) # 插入多行数据时
  15. print(cursor.fetchall()) # 取出所有的
  16. print(cursor.fetchmany(3))# 取出多条
  17. print(cursor.fetchone()) # 取出单条
  18. cursor.scroll(3,'absolute') # 绝对移动,按照数据最开始位置往下移动3条
  19. cursor.scroll(1,'relative') # 通过上面取了一次数据,游标的位置 ,我现在相对移动了1个记录,那么下次再取,取出的是第三条,我相对于上一条,往下移动了一条
  20. conn.commit() # 增删改操作时,需要进行提交
  21. cursor.close() # 关闭游标
  22. conn.close() # 关闭连接

MySQL注入问题

之前我们进行用户名密码认证是先将用户名和密码保存到一个文件中,然后通过读文件里面的内容,来和客户端发送过来的用户名密码进行匹配,现在我们学了数据库,我们可以将这些用户数据保存到数据库中,然后通过数据库里面的数据来对客户端进行用户名和密码的认证。

​ 自行创建一个用户信息表userinfo,里面包含两个字段,username和password,然后里面写两条记录

  1. sql注入:解决方案
  2. cursor.excute(sql,[参数1,参数2...])
  3. # 使用数据来进行一下用户名和密码的认证操作
  4. import pymysql
  5. conn = pymysql.connect(
  6. host='127.0.0.1',
  7. port=3306,
  8. user='root',
  9. password='123',
  10. database='db',
  11. charset='utf8'
  12. )
  13. cursor = conn.cursor(pymysql.cursors.DictCursor)
  14. usr = input('请输入用户名:').strip()
  15. pwd = input('请输入密码:').strip()
  16. # 当已知用户名时 破解密码为 (feng'-- dfadasdad)
  17. # 当未知用户名密码时 破解密码为 (fsdf' or 1=1 -- fdsfsdfs)
  18. sql = "select * from userinfo where username='%s' and password='%s';"%(usr,pwd)
  19. res = cursor.execute(sql) # res我们说是得到的行数,如果这个行数不为零,说明用户输入的用户名和密码存在,如果为0说名存在,你想想对不
  20. print(res) # 如果输入的用户名和密码错误,这个结果为0,如果正确,这个结果为1
  21. if res:
  22. print('登陆成功')
  23. else:
  24. print('用户名和密码错误!')
  25. # 通过上面的验证方式,比我们使用文件来保存用户名和密码信息的来进行验证操作要方便很多。

解决注入问题

  1. sql = "select * from userinfo where username = %s and password = %s;"%(usr,pwd)
  2. res = cursor.execute(sql,[usr,pwd]) # pymysql 模块会自动将输入的特殊字符删除

python连接mysql服务端的更多相关文章

  1. 解决在Linux操作系统下无法连接MySQL服务端的问题

    遇到这种问题的时候我们需要考虑的是防火墙规则,因为防火墙默认是禁止所有端口访问的,所以我们需要添加一个访问端口来连接MySQL. 命令如下: 允许某端口   firewall-cmd  --zone= ...

  2. mysql服务端安装的系列问题处理

    1.mysql服务无法启动,报1067错误 注意:mysql服务端加压之后的文件名最好不要带其他符号(如:"_"之类等其他的一些符号),用纯英文跟数字就可以,没有经过仔细验证带符号 ...

  3. Python连接MySQL数据库的多种方式

    上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器 ...

  4. python的flex服务端数据接口开发

    python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted ...

  5. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  6. python连接mysql的驱动

    对于py2.7的朋友,直接可以用MySQLdb去连接,但是MySQLdb不支持python3.x.这是需要注意的~ 那应该用什么python连接mysql的驱动呢,在stackoverflow上有人解 ...

  7. paip.python连接mysql最佳实践o4

    paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...

  8. python 连接Mysql数据库

    1.下载http://dev.mysql.com/downloads/connector/python/ 由于Python安装的是3.4,所以需要下载下面的mysql-connector-python ...

  9. python入门(十七)python连接mysql数据库

    mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuem ...

随机推荐

  1. LeetCode 100. Same Tree (判断树是否完全相同)

    100. Same Tree Given two binary trees, write a function to check if they are the same or not. Two bi ...

  2. mysql 连接远程阿里云数据库

    一.修改mysql 数据库的远程访问权限 use mysql; SELECT HOST,user,PASSWORD FROM USER; -- 查询用户信息 UPDATE USER SET HOST= ...

  3. [精] UBOOT2017+FIT 启动流程详尽分析

    开发环境:Nanopi-neo-plus2 软件版本:uboot-2017 软件版本:linux-4.14 买这个板子有一段时间了,并没有全身心的投入在上面,有时间了的话就搞一搞, 这篇随笔算是对这个 ...

  4. Ubuntu18.04LTS python3.6 cuda10.0 下安装低版本的pytorch

    Ubuntu18.04LTS python3.6 cuda10.0 下安装低版本的pytorch,运行Hypergraph Neural Networks(HGNN) https://github.c ...

  5. 如何自己手动修改win10磁贴背景颜色?

    前言 当我们安装完应用后,可以选择将应用图标固定到"开始"屏幕,于是就会产生一个磁贴,有的应用会自带背景颜色,有的则是默认的主题色.其实这个只不过是应用本身没有没有去适配win10 ...

  6. [转帖]超能课堂(207) SD卡标准错综复杂,到底该认哪一个?

    超能课堂(207)SD卡标准错综复杂,到底该认哪一个? https://www.expreview.com/71505.html 开始的地方 SD容量等级 SD标准(SDSC) SDHC SDXC S ...

  7. php数组到json的转变

    今天做项目遇到个问题,一个接口,输出二维数组,前端说他要的数据格式是数组,而不是对象,就像上个数据一样,我当时就懵逼了,,,什么对象?我明明输出的是数组啊...然后我看了看我返回的json串,emmm ...

  8. Python知识点总结篇(一)

    Python基础 变量 变量类型: 1.数字型 整形:int: 浮点型:float: 布尔型:bool,True和False: 复数型:complex: 2.非数字型 字符串: 列表: 元祖: 字典: ...

  9. C++11 新特性之智能指针(shared_ptr, unique_ptr, weak_ptr)

    这是C++11新特性介绍的第五部分,涉及到智能指针的相关内容(shared_ptr, unique_ptr, weak_ptr). shared_ptr shared_ptr 基本用法 shared_ ...

  10. C语言--简易词法分析器

    #include <stdio.h>#include <stdlib.h>#include <string.h>int p,m,syn,n,sum;       / ...