pymysql模块的使用(6)
sql注入问题 pymysql的使用
pip3 install pymysql """ 利用一些语法的特性 书写一些特点的语句实现固定的语法 MySQL利用的是MySQL的注释语法 select * from user where name='jason' -- jhsadklsajdkla' and password='' select * from user where name='xxx' or 1=1 -- sakjdkljakldjasl' and password='' """ 日常生活中很多软件在注册的时候都不能含有特殊符号 因为怕你构造出特定的语句入侵数据库 不安全 # 敏感的数据不要自己做拼接 交给execute帮你拼接即可 # 结合数据库完成一个用户的登录功能? import pymysql conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '123456', database = 'day48', charset = 'utf8' # 编码千万不要加- ) # 链接数据库 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) username = input('>>>:') password = input('>>>:') sql = "select * from user where name=%s and password=%s" # 不要手动拼接数据 先用%s占位 之后将需要拼接的数据直接交给execute方法即可 print(sql) rows = cursor.execute(sql,(username,password)) # 自动识别sql里面的%s用后面元组里面的数据替换 if rows: print('登录成功') print(cursor.fetchall()) else: print('用户名密码错误')
pymysql的补充
# 1.针对增删改 pymysql需要二次确认才能真正的操作数据 import pymysql conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', passwd = '123456', db = 'day48', charset = 'utf8', autocommit = True ) cursor = conn.cursor(pymysql.cursors.DictCursor) # 增 sql = 'insert into user(name,password) values(%s,%s)' # rows = cursor.execute(sql,('jackson',123)) rows = cursor.executemany(sql,[('xxx',123),('ooo',123),('yyy',123)]) print(rows) # conn.commit() # 确认 # 修改 # sql = 'update user set name="jasonNB" where id=1' # rows = cursor.execute(sql) # print(rows) # conn.commit() # 确认 # 删除 sql = 'delete from user where id=7' rows = cursor.execute(sql) print(rows) conn.commit() # 确认 # 查 # sql = 'select * from user' # cursor.execute(sql) # print(cursor.fetchall()) """ 增删改查中 删改增它们的操作设计到数据的修改 需要二次确认 """ # 还可以一次性插入N多条数据 rows = cursor.executemany(sql,[('xxx',123),('ooo',123)])