pip install PyMySQL3.查看文档 二、sql语句参考
http://c.biancheng.net/sql/ https://www.liaoxuefeng.com/wiki/1177760294764384/1179610846971200 https://www.runoob.com/sql/sql-tutorial.html https://www.yiibai.com/sql/sql-overview.html
三、教程
1.查找数据查 是一个模板
增、删、改是另一个模板
import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
sql_select = "SELECT * FROM `test01_table`"
cur.execute(sql_select)#返回受影响的行数,根据个人情况保存不保存数据
#4.获取返回的数据
#result = cur.fetchone()#获取一行信息,返回的是字典
result = cur.fetchall()#获取所有行信息,返回列表(每一条数据是字典)
#result = cur.fetchmany(size=2)#获取指定行数信息,返回列表(每一条数据是字典)
print(result)
print(type(result))
2.插入数据
import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
sql_select = "INSERT INTO `test01_table` (username, PASSWORD) VALUES ('小王2', '8985632');"
cur.execute(sql_select)#返回受影响的行数
#4.提交数据
mysql_con.commit()#默认情况下,连接不是自动提交。所以你必须承诺保存
3.改数据
import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
sql_select = "UPDATE test.`test01_table` SET PASSWORD='root' WHERe id=1;"
cur.execute(sql_select)#返回受影响的行数
#4.提交数据
mysql_con.commit()#默认情况下,连接不是自动提交。所以你必须承诺保存
4.删除数据
import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
sql_select = "DELETE FROM test01_table WHERe id=7;"
cur.execute(sql_select)#返回受影响的行数
#4.提交数据
mysql_con.commit()#默认情况下,连接不是自动提交。所以你必须承诺保存
四、sql注入
1.注入案例
import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
var = "100' or 1=1 or'"#含sql注入程序
sql_select = "SELECT * FROM `test01_table` where id ='%s';"%var
print(sql_select)
cur.execute(sql_select)#返回受影响的行数,根据个人情况保存不保存数据
#4.获取返回的数据
#result = cur.fetchone()#获取一行信息,返回的是字典
result = cur.fetchall()#获取所有行信息,返回列表(每一条数据是字典)
#result = cur.fetchmany(size=2)#获取指定行数信息,返回列表(每一条数据是字典)
print(result)
print(type(result))
会显示所有数据
2.防止注入
import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
var = "100' or 1=1 or'"#含sql注入程序
sql_select = "SELECT * FROM `test01_table` where id =%s;"
print(sql_select)
cur.execute(sql_select,args=[var])#返回受影响的行数,根据个人情况保存不保存数据
#4.获取返回的数据
#result = cur.fetchone()#获取一行信息,返回的是字典
result = cur.fetchall()#获取所有行信息,返回列表(每一条数据是字典)
#result = cur.fetchmany(size=2)#获取指定行数信息,返回列表(每一条数据是字典)
print(result)
print(type(result))
只显示指定条数据
3.多个参数import pymysql
#1.连接数据库
mysql_con = pymysql.connect(host='localhost',
port=3306,
user='root',
password='root',
database='test',
cursorclass=pymysql.cursors.DictCursor)#查看源码,参考参数配置
#2.创建游标
cur = mysql_con.cursor()
#3.执行语句
sql_select = "SELECT * FROM `test01_table` where id =%s and username = %s;"
print(sql_select)
cur.execute(sql_select,args=[2,'小李'])#返回受影响的行数,根据个人情况保存不保存数据
#4.获取返回的数据
#result = cur.fetchone()#获取一行信息,返回的是字典
result = cur.fetchall()#获取所有行信息,返回列表(每一条数据是字典)
#result = cur.fetchmany(size=2)#获取指定行数信息,返回列表(每一条数据是字典)
print(result)
print(type(result))
五、注意
1.连接数据失败,异常处理
2.根据受影响行数,判断处理是否成功
3.最大连接数设置、连接池等。



