栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python连接mysql——PyMySQL库

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python连接mysql——PyMySQL库

一、安装 1.百度搜索 “PyMySQL · PyPI” 2.安装命令
pip install PyMySQL
 3.查看文档

二、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.最大连接数设置、连接池等。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号