导入pymysql
import pymysql

# 创建connect()对象
conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = 'root',
database = 'db1',
charset = 'utf8'
)
# 产生一个游标对象 以字典的形式返回查询出来的数据,键是表的字段,值时字段对应的记录
cursor = conn.cursor(pymysql.cursors.DictCursor)
# 编写sql语句,赋值给一个变量
sql = 'select * from teacher'
# 执行传入的sql语句
res = cursor.execute(sql)
# print(res) # res 是执行语句返回的数据条数
print(cursor.fetchone()) # fetchone只获取一条数据 {'tid': 1, 'tname': '张磊老师'}
print(cursor.fetchone()) # 只获取一条数据 {'tid': 2, 'tname': '李平老师'} 获取的是第二条数据,因为游标在移动 # 控制光标移动
cursor.scroll(1,'absolute') # absolute 绝对移动,相对起始位置,往后移动几位
cursor.scroll(1,'relative') # relative 相对移动,现对于当前光标所在位置,往后移动几位 print(cursor.fetchall()) # fetchall获取所有数据,返回的是一个列表
# [{'tid': 1, 'tname': '张磊老师'}, {'tid': 2, 'tname': '李平老师'},
# {'tid': 3, 'tname': '刘海燕老师'}, {'tid': 4, 'tname': '朱云海老师'},
# {'tid': 5, 'tname': '李杰老师'}]

增删改查

import pymysql

conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = 'root',
database = 'db2',
charset = 'utf8',
autocommit = True # 这个参数配置后,增删改操作都不会需要手动加conn.commit了 )
cursor = conn.cursor(pymysql.cursors.DictCursor) '''
增删改操作对于数据库来说都是敏感操作
都必须加一句 conn.commit()
'''
# conn.commit()
# sql = 'insert into user(id,name,password) values(3,"dazhuang","321")' # 增数据
# sql = 'update user set name = "xiaozhuang" where id = 3' # 改数据
# sql = 'delete from user where id = 3' # 删数据
# cursor.execute(sql) username = input('>>>:')
pwd = input('>>>:')
sql = "select * from user where name = %s and password = %s" # 查数据
print(sql)
# 根据sql语句匹配用户输入的名合密码是否存在
res = cursor.execute(sql,(username,pwd)) # 能帮你自动过滤特殊符号,不免sql注入问题
# execute 能够识别%s并且自动过滤特殊符号 完成sql语句的拼接
print(res) # 若存在 返回的是数据的条数1,不存在返回的是0条数据
# 判断 res 是否有值
if res:
print(cursor.fetchall())
else:
print('用户名或密码错误')

sql注入问题

sql 注入问题:
就是利用注释等具有特殊意义的符号来利用mysql的漏洞 解决办法:
利用excute帮你去拼接数据 将 sql = "select * from user where name = %s and password = %s" %(username,pwd)
改为: sql = "select * from user where name = %s and password = %s"
res = cursor.execute(sql,(username,pwd))
# 不要手动去拼接查询的sql语句
username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username='%s' and password='%s'"%(username,password) # 用户名正确
username >>>: jason' -- jjsakfjjdkjjkjs
# 用户名密码都不对的情况
username >>>: xxx' or 1=1 --asdjkdklqwjdjkjasdljad
password >>>: ''

最新文章

  1. BZOJ 4548 小奇的糖果
  2. WPF Window 服务安装
  3. 交通银行 Java Socket 服务启动 管理 WINDOWS 版
  4. create feature from text file
  5. BZOJ 1682: [Usaco2005 Mar]Out of Hay 干草危机
  6. 粗窥STARTUP.A51和INIT.A51
  7. HDU - 5276 YJC tricks time
  8. Linux-进程描述(4)之进程优先级与进程创建执行
  9. Eclipse Oxygen 解决 自动导包的问题
  10. 六星经典CSAPP笔记(1)计算机系统巡游
  11. TestNG失败自动截图
  12. Web前端教程-HTML及标签的使用
  13. CSS 使用absolute 是<div>居中
  14. ubuntu 创建文件夹和删除文件
  15. 使用SQLsever批量查询TXT文本中的值
  16. LeetCode(67):二进制求和
  17. RDD中的cache() persist() checkpoint()
  18. android studio 查看大纲
  19. Java NIO Channel to Channel Transfers
  20. mysql 创建merge表方便查询

热门文章

  1. hadoop 集群调优实践总结
  2. [转帖]是什么阻止了在18寸(450mm)晶圆上生产芯片?
  3. STL源码剖析——iterators与trait编程#1 尝试设计一个迭代器
  4. 题解 Luogu P1099 【树网的核】
  5. zblog常用到的几个标签介绍
  6. 利用Python进行数据分析 第7章 数据清洗和准备(2)
  7. Eclipse设置每行的最大字符数
  8. mysql全面整理(用于复习、查阅)--正在更新
  9. 如何使用Cloud Foundry CLI把一个应用推送到MindSphere
  10. EfCore基本用法