数据库的可视化工具和pymysql模块
一.数据库的可视化工具
navicate下载地址:https://pan.baidu.com/s/1bpo5mqj
掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键
二.pymysql模块
#本质pymysql模块就是一个套接字客户端 import pymysql #pip3 install pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor)#游标 # rows=cursor.execute('show tables;') rows=cursor.execute('select * from class;')#这是游标执行sql语句 print(rows) # print(cursor.fetchone()) #一次只查一行 # print(cursor.fetchmany(2)) # print(cursor.fetchall()) # print(cursor.fetchall()) #绝对 # print(cursor.fetchall()) # cursor.scroll(3,'absolute')#绝对移动 往后移动3条取到第四条 # print(cursor.fetchone()) #相对 print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(1,'relative')#相对于当前的位置往后移动一条 print(cursor.fetchone()) cursor.close() conn.close()
三.防止sql注入的问题
5.1什么是sql注入的问题
通过输入一堆特殊的字符串来改变sql语句的执行逻辑,从而改变程序的执行逻辑,绕过认证环节,直接登到后台
注意:--表示把sql语句后面的部分都注释掉了
import pymysql #pip3 install pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor) inp_user=input('用户名>>:').strip() #inp_user="" inp_pwd=input('密码>>:').strip() #inp_pwd="" sql="select * from user where username='%s' and password='%s'" %(inp_user,inp_pwd) print(sql) rows=cursor.execute(sql) if rows: print('登录成功') else: print('登录失败') cursor.close() conn.close()
5.2sql注入的原理
无非是字符串的拼接操作
5.3为什么不让输特殊符号
因为特殊符号会改变sql语句的执行逻辑
5.4如何防止sql注入呢
import pymysql #pip3 install pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor) inp_user=input('用户名>>:').strip() #inp_user="" inp_pwd=input('密码>>:').strip() #inp_pwd="" sql="select * from user where username=%s and password=%s"#不要自己拼接字符串 print(sql) rows=cursor.execute(sql,(inp_user,inp_pwd))#这里用模块就可以 if rows: print('登录成功') else: print('登录失败') cursor.close() conn.close()
四.增删改查
import pymysql #pip3 install pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor) # sql='insert into user(username,password) values(%s,%s)' # rows=cursor.execute(sql,('EGON','123456')) # print(rows) # print(cursor.lastrowid) # rows=cursor.execute('update user set username="alexSB" where id=2') # print(rows) # 一次插入多行记录 sql='insert into user(username,password) values(%s,%s)' rows=cursor.executemany(sql,[('lwz','123'),('evia','455'),('lsd','333')])#一个小元祖就是一个记录 print(rows) print(cursor.lastrowid)#到底现在记录到多少条了 conn.commit() # 只有commit提交才会完成真正的修改,只要不提交他,前面的改都不会真的改 cursor.close() conn.close()

浙公网安备 33010602011771号