安装
pip3 install pymysql
pymysql 使用
'''
过程:
1. 建立连接
2. 设置一个可以执行sql语句的对象 - 游标
3. 通过该对象执行sql语句得到执行结果
4. 端口连接
'''
import pymysql
# 1. 建立连接
conn = pymysql.connect(host="ip地址", port=端口, database="库", user="账户", password='密码')
# 设置游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
inp_user = input("username>>>:").strip()
inp_pwd = input("password>>>:").strip()
# 不检测有可能是sql注入
# sql = 'select * from user where username = "%s" and password = "%s"' % (inp_user, inp_pwd)
# rows = cursor.execute(sql)
# 检测sql语句特殊字符
rows = cursor.execute('select * from user where username = %s and password = %s', args=(inp_user, inp_pwd))
# 判断是否正确
if rows:
    print("login successful")
else:
    print("username or password error")
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
execute()之sql注入
#1、sql注入之:用户存在,绕过密码
egon' -- 任意字符
#2、sql注入之:用户不存在,绕过用户与密码
xxx' or 1=1 -- 任意字符
pymysql 增删改
import pymysql
# 建立连接
conn = pymysql.connect(host="ip地址", port=端口, database="库", user="账户", password='密码')
# 设置游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 插入单条数据
cursor.execute("insert into user value(4,'xxx','123')")
# 插入多条数据
sql = 'insert into user(username, password) value(%s,%s)'
cursor.executemany(sql, [('fff', '123'), ('kkk', '123')])
# 改一条数据
cursor.execute("update user set username='jjj' where username='fff'")
# 删一条数据
cursor.execute("delete  from user where username='jjj'")
# 提交事务
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
查询:fetchone,fetchmany,fetchall
import pymysql
# 建立连接
conn = pymysql.connect(host="ip地址", port=端口, database="库", user="账户", password='密码')
# 设置游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 查所有数据不需要commit提交
rows = cursor.execute("select * from user")
print(rows) # 返回结果行数
# 取一条查询结果
# res = cursor.fetchone()
print(res) # 返回数据
# 取所有查询结果
res = cursor.fetchall()
print(res) # 返回数据
# 查第几个开始
res = cursor.fetchmany(2)
print(res) # 返回数据
# 查询相对移动或绝对移动
test = cursor.scroll(3,mode='absolute') # 相对绝对位置移动
print(test)
test = cursor.scroll(3,mode='relative') # 相对当前位置移动
print(test)
# 关闭游标
cursor.close()
# 关闭连接
conn.close()
注意(重点)
#改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from user where username=%s and password=%s" # 注意%s需要去掉引号,因为pymysql会自动为我们加上
res=cursor.execute(sql,(user,pwd)) # pymysql模块自动帮我们解决sql注入的问题