新健库 ,新增字段+类型+约束
设计表:外键(自增)
新建查询
建立表模型
创建表 及数据(根据模型看)
sql 练习题(根据模型看)
pymysql 模块
# import pymysql # #连接 # conn = pymysql.connect( # host = 'localhost', # port = 3306, # user = 'root', # password = '', # database = 'day41', # charset = 'utf8' # ) # 游标 # cursor =conn.cursor() #执行完毕后返回的结果默认的以元组显示 # cursor =conn.cursor(pymysql.cursors.DictCursor) #将查询结果做成字典的格式 # pymysql操作数据库 # 执行sql 语句 # 语句在mysql里面执行 # res=cursor.execute("select * from class") #执行sql语句 返回sql查询成功的记录数目 # print(res) #查询到的数据总条数 # print(cursor.fetchone()) # {'cid': 1, 'caption': '三年二班'} 获取一条查询结果 # 类似于管道取一条少一条 # print(cursor.fetchone()) #{'cid': 2, 'caption': '三年三班'} 获取一条查询结果 # # # print(cursor.fetchone()) #{'cid': 3, 'caption': '一年二班'} 获取一条查询结果 # cursor.scroll(1,'relative') #相对移动,第三条数据被截取 # # print(cursor.fetchall()) #[{'cid': 4, 'caption': '二年九班'}] # cursor.scroll(1,'absolute') #绝对移动,参照开始位置 # print(cursor.fetchall()) #[{'cid': 2, 'caption': '三年三班'}, {'cid': 3, 'caption': '一年二班'}, {'cid': 4, 'caption': '二年九班'}]
sql 注入问题不要手动去拼接查询的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 #在sql里面 --代表注释掉 约束条件来判断的时候 1=1 is Ture password >>>: ''
正确注入
username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username=%s and password=%s"
res=cursor.execute(sql,(username,password)) #sql会自己去拼接
增 改查
import pymysql conn = pymysql.connect(host='localhost', port=3306, user='root', password='', database='day41', #哪个库下面 charset='utf8', autocommit=True # 插入数据之后 确保无误后才会真正修改到数据库 在这里声明的话每次操作都会直接修改到数据库 ) cursor = conn.cursor(pymysql.cursors.DictCursor) username = input('》》》:') password = input('》》》: ') #插入数据 # sql = "insert into userinfo(name,password) values (%s,%s)" # 必须让mysql自己拼接 不然有可能自己拼接的在mysql里面执行的时候约束条件 # 有一个判断就直接进去了数据就不安全了 # res = cursor.execute(sql,(username,password)) # conn.commit() #确保数据无误后,commit之后才会将数据真正修改到数据库 # if res: # print(cursor.fetchall()) # pass # else: # print('用户名或密码错误!') #查询验证 # sql='select * from userinfo where name =%s and password=%s ' # res=cursor.execute(sql,(username,password)) # conn.commit() # if res: # pass # else: # print('密码或用户名错误') #更新数据 # sql = "update userinfo set name=%s where id =%s" # # res=cursor.execute(sql,(username,password)) # if res: # pass # else: # print('error')