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('登录失败')

绕过密码登录:

python-day47--pymysql模块

绕过用户和密码登录:

python-day47--pymysql模块

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','')) #插入一条记录
rows=cursor.executemany(sql,[('yuanhao',''),('laowu',''),('kgf','')]) #插入多条记录
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()

python-day47--pymysql模块

上一篇:Unity3D学习笔记(二)Unity的JavaScript基础


下一篇:ajax post提交空字符串(string.Empty) MVC接收为null的问题