mysql之pymysql模块相关

首先应该学会怎样安装pymysql模块:
  安装1:

//安装
pip 3 install pymysql
/*如果pip不能正常使用可以报:Fatal error in launcher: Unable to create process using ‘"‘
可能是因为pip的配置不太正常,可以使用:*/
python -m pip install pymysql //尝试一下一般都会成功,注意前面python的版本号

  安装2:在pycharm中安装

pymysql的用法:(连接数据库、获取游标、执行SQL语句、关闭游标,关闭连接)

import pymysql
# 获取用户输入
name = input("用户名>>:")
pwd = input("密码>>:")

# 校验用户输入的用户名和密码是否正确
# 去数据库里取数据做判断
# 1. 连上数据库
conn = pymysql.connect(host="localhost",database="s8", user="root", password="", charset="utf8")  # 不是utf-8
# 光有链接还不行,需要获取光标,让我能够输入SQL语句并执行
cursor = conn.cursor()
# 2. 执行SQL语句 --> select * from userinfo where name=name and pwd=pwd
sql = "select * from userinfo WHERE name=‘%s‘ and pwd=‘%s‘;" % (name, pwd)
print(sql)
ret = cursor.execute(sql)  # 获取影响的行数
# 关闭光标和连接
cursor.close()
conn.close()
if ret:
    print("登陆成功")
else:
    print("登录失败")

  虽然已经实现了对输入的用户名和密码与数据库中的数据进行对比了,但时出现了一点问题,如果用户输入时输入--符号时就会注释掉它后面的sql不会执行,就会绕开密码,例如:

最后那一个空格,在一条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)
# rows=cursor.execute(sql)

#改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from userinfo where name=%s
 and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
rows=cursor.execute(sql,[user,pwd])
#pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。

对数据库数据的增、删、改、查:

持续更新....

  

原文地址:https://www.cnblogs.com/jingjing12/p/8260650.html

时间: 2024-08-30 06:22:54

mysql之pymysql模块相关的相关文章

第二百七十九节,MySQL数据库-pymysql模块

MySQL数据库-pymysql模块 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数使用方式: 模块名称.connect() 参数: host=数据库ip port=数据库端口 user=数据库用户名 passwd=数据库密码 db=数据库名称 cursor()创建数据库操作游标,无参使用方式: 游标变量.cursor() execute()操作数据库,参数1 sql语句,参数2 字符串占位符变量使用方式: 游标变量.exe

【转】Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1 pip3 install pymysql 二.使用操作 1.执行SQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,pymysql支持python3.x. 一.安装 pip install pymysql 二.使用操作 1.执行SQL #!/usr/bin/env pytho # -*- coding:utf-8 -*- importpymysql # 创建连接 conn =pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd

(转)Python中操作mysql的pymysql模块详解

原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python 3 进阶 -- 使用 PyMySQL 操作 MySQL 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1

Python操作MySQL:pymysql模块

连接MySQL有两个模块:mysqldb和pymysql,第一个在Python3.x上不能用,所以我们学pymysql import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='mysql8', db='mysqltest') # 创建游标(光标) cursor = conn.cursor() # 执行SQL,返回影响行数 effect_rows = curso

mysql python pymysql模块 增删改查 查询 字典游标显示

我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可以查询到字段名 在拿游标时候加上字典显示的游标 cur = conn.cursor(pymysql.cursors.DictCursor) import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysq

mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数

查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = '123' encoding = 'utf8' # 建立 连接mysql服务端 conn = pymysql.connect( host=mysql_host, # mysql服务端ip port=port, # mysql端口 user=mysql_user, # mysq

python连接mysql之pymysql模块

以下demo均以python2中的mysqldb模块 一.插入数据 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import MySQLdb   conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')   cur = conn.cursor()   reCount = cur.execute('insert into UserInfo(Name,Address) va

MySQL之pymysql模块

import pymysql #s链接数据库 conn = pymysql.connect( host = '127.0.0.1', #被连接数据库的ip地址 port = 3306, #数据库服务端端口号 user = 'root', #用户名 password = '123456', #密码 database = 'db1', #选择库 charset = 'utf8' #编码格式 ) #拿到执行sql语句的游标 cur = conn.cursor() #查询语句 select_sql =