python-day47--pymysql模块
一、安装导入
#安装
pip3 install pymysql
二、使用
1 .基本使用
import pymysql
# 链接,拿到游标
conn=pymysql.connect(host='local',user='root',password='963.',database='day47',charset='utf8')
cursor=conn.cursor() #拿到游标,即mysql>
# 执行sql
sql='select * from user where id>1'
rows=cursor.execute(sql) #拿到的是受影响的行数---记录数
print('%s rows in set (0.00 sec)' %rows)
cursor.close()
conn.close()
2 .小练习:
user=input('-->:').strip()
pwd=input('-->:').strip()
# 链接,拿到游标
conn=pymysql.connect(host='localhost',user='root',password='963.',database='day47')
cursor=conn.cursor() #拿到游标,即mysql>
# 执行sql
sql='select * from user where name="%s" and password="%s";'%(user,pwd)
rows=cursor.execute(sql) #拿到的是受影响的行数---记录数
if rows:
print('welcome')
else:
print('error')
cursor.close()
conn.close()
3:sql注入
注意:符号--会注释掉它之后的sql
#1、sql注入之:用户存在,绕过密码
egon" -- 任意字符
#2、sql注入之:用户不存在,绕过用户与密码
xxx" or 1=1 -- 任意字符
import pymysql
user=input('用户名>>: ').strip()
pwd=input('密码>>: ').strip()
conn=pymysql.connect(host='localhost',user='root',password='',database='day47')
cursor=conn.cursor()
sql='select * from user where user="%s" and password="%s";' %(user,pwd)
print(sql)
rows=cursor.execute(sql)
cursor.close()
conn.close()
if rows:
print('登录成功')
else:
print('登录失败')
绕过密码登录:
绕过用户和密码登录:
4.解决sql注入
import pymysql
user=input('用户名>>: ').strip()
pwd=input('密码>>: ').strip()
conn=pymysql.connect(host='localhost',user='root',password='',database='day47')
cursor=conn.cursor()
sql='select * from user where user=%s and password=%s;'
rows=cursor.execute(sql,[user,pwd]) #可以用列表和元组的形式
print(rows)
cursor.close()
conn.close()
if rows:
print('登录成功')
else:
print('登录失败')
三、增删改查
1 增删改
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='',database='day47',charset='utf8')
cursor=conn.cursor()
sql='insert into user(user,password) values(%s,%s);'
rows=cursor.execute(sql,('alex','123')) #插入一条记录
rows=cursor.executemany(sql,[('yuanhao','123'),('laowu','123'),('kgf','12323')]) #插入多条记录
print('%s row in set (0.00 sec)' %rows)
conn.commit() #提交给数据库
cursor.close()
conn.close()
2 查:fetchone,fetchmany,fetchall
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='',database='day47',charset='utf8')
cursor=conn.cursor()
sql='select * from user;'
rows=cursor.execute(sql)
查单条
res1=cursor.fetchone()
res2=cursor.fetchone()
res3=cursor.fetchone() #查出结果是元组的形式
print(res1[0])
print(res2)
print(res3)
结果:
1
(2, 'alex', 456)
None
查多条
print(cursor.fetchmany(3))
print(cursor.fetchone())
结果:
((1, 'egon', 123), (2, 'alex', 456))
None
查所有
print(cursor.fetchall())
print(cursor.fetchone())
结果:
((1, 'egon', 123), (2, 'alex', 456))
None
光标的移动 -- 绝对移动
print(cursor.fetchall())
cursor.scroll(0,mode='absolute')
print(cursor.fetchone())
cursor.scroll(1,mode='absolute')
print(cursor.fetchone())
结果:
((1, 'egon', 123), (2, 'alex', 456))
(1, 'egon', 123)
(2, 'alex', 456)
cursor.scroll(1,mode='relative') --相对移动
print(cursor.fetchone())
结果:
(2, 'alex', 456)
None
3 获取插入的最后一条数据的自增ID
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='963.',database='day47',charset='utf8')
cursor=conn.cursor()
sql='insert into user(name,password) values(%s,%s);'
rows=cursor.execute(sql,('alex',123))
# rows=cursor.executemany(sql,[('yuanhao','123'),('laowu','123'),('kgf','12323')])
conn.commit()
print(cursor.lastrowid) #结果 5
cursor.close()
conn.close()