当前位置: 首页 > wzjs >正文

wordpress免费建站教程怎么制作网站获取ip

wordpress免费建站教程,怎么制作网站获取ip,wordpress什么环境,网站系统的运营和维护掌握pymysql对数据库实现增删改查数据库工具类封装,数据库操作应用场景 数据库操作应用场景 校验测试数据 : 删除员工 :构造测试数据 : 测试数据使用一次就失效,不能重复使用 : 添加员工(is_delete)测试数据在展开测试前无法确定是否存在 : 查询,修改,删除员工 操作步骤:!~…
  1. 掌握pymysql对数据库实现增删改查
  2. 数据库工具类封装,数据库操作应用场景

数据库操作应用场景

  • 校验测试数据 : 删除员工 :
  • 构造测试数据 :
    • 测试数据使用一次就失效,不能重复使用 : 添加员工(is_delete)
    • 测试数据在展开测试前无法确定是否存在 : 查询,修改,删除员工
操作步骤:!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
  1. 导包 import pymysql
  2. 创建链接 : con=pymysql.connect()
  3. 创建游标 : cursor=conn.cursor()
  4. 执行SQL语句 : conn.execute(“sql语句”)
    • 查询语句selete : 不修改数据库,返回结果集
      • 从结果集中提取想要的数据,cursor.fetch*
    • 增删改insert,update,delete : 没有结果返回,会修改数据库
      • 执行成功 : 提交事务,conn.commit()
      • 执行失败 : 回滚事务,conn.rollback()
  5. 关闭游标 : cursor.close()
  6. 关闭链接 : conn.close()
事务
  • 概念 : 将数据库中连续的一条或多条SQL语句,看作一个整体,作为一个事务存在,要么都成功,要么都失败(eg : 跨行转账)
  • 操作方法 :
    • 提交事务 : commit
    • 回滚事务 : rollback

PyMySQL连接数据库

建立连接方法

conn = pymysql.connect(host="",port=0,user="",password="",database="",charset="")
host : 数据库主机ip地址
port : int类型,数据库使用端口号
user : 数据库用户名
password : 数据库用户密码
database : 数据库名
charset : 字符集conn : 成功建立的数据库对象
# 示例----获取版本
# 导包
import pymysql# 创建连接
conn = pymysql.connect(host="  ", port=3306, user="root", password="123456",database="emp", charset='utf8')
# 创建游标
my_cursor=conn.cursor()# 执行select sql
my_cursor.execute("select version();")# 提取结果
res=my_cursor.fetchone()
print("查询结果:",res)
# 关闭游标
my_cursor.close()
# 关闭连接
conn.close()
游标特性

在这里插入图片描述

  1. 游标负责提取结果集中的数据
  2. 新创建的游标指向结果集0条记录
  3. 游标提取数据的方式:每次提取游标指向位置的下一条记录
  4. 每成功提取一条记录,游标会自动向下游动
提结果集
  • 常用方法 :
    • fetchone() : 从结果集中提取一条记录
    • fetchmany(size) : 从结果集中,提取size条记录
    • fetchall() : 提取全部数据
    • 游标属性rownumber : 设置游标位置,常用于归0,cursor.rownumber=0
# 查询t_book表单,获取第一条数据
# 查询t_book表单,获取全部数据
# 查询t_book表,获取第三条和第四条数据
# 导包
import pymysql# 创建连接
conn=pymysql.connect(host="",port=7061,user="root", password="123456",database="emp", charset='utf8')
# 创建游标
cursor1=conn.cursor()
# 执行sql命令
cursor1.execute('select * from t_book')
# 获取1个结果
resp1=cursor1.fetchone(1)
print("提取一个结果:",resp1)# 设置游标归0
cursor1.rownumber=0
# 获取全部结果
resp2=cursor1.fetchall()
print("提取全部:",resp2)# 设置游标指向2
cursor1.rownumber=2# 获取3,4两个结果
resp3=cursor1.fetchmany(2)
print("提取3,4结果:",resp3)# 关闭游标
cursor1.close()
# 关闭连接
conn.close()
异常捕获
# 语法:
try:尝试执行的代码
except Exception as err:出现异常后,执行的代码
finally:无论有没有异常,都会执行的代码
---------------------------------
!!!给cursor和conn创建全局变量,方便全局调用
conn=None
cursor=None

在这里插入图片描述

增删改数据
  • 使用try-finally抛出异常时,将conn和cursor设为全局变量,
    在这里插入图片描述
# 单独实现如下操作:
1>.新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01)
# 定义两个全局变量
conn=None
my_cursor=None
try:my_cursor.execute("insert into t_book(id,title,pub_date) values(5,'西游记','1986-01-01');")
# 提交事务-------提交事务才会对实际表做修改conn.commit()
如果出现异常,要在except Exception as err中添加回滚事务conn.rollback()
except Exception as err:conn.rollback()
2>.把图书名为'西游记'的阅读量加1
import pymysql# 创建连接
conn=pymysql.connect(host="",port=7061,user="root", password="123456",database="books", charset='utf8',autocommit=False)# 关闭自动提交,改为手动提交
# 创建游标
cursor1=conn.cursor()
# 执行sql命令
# 这里read是关键字名,需要用``确保数值
cursor1.execute("update t_book set `read`=`read`+1 where title = '西游记';")
# 显示影响结果
print("Affected rows:",conn.affected_rows)
# 提交事务
conn.commit()# 关闭游标
cursor1.close()
# 关闭连接
conn.close()
  • 执行删除,需要删除的数据如果不存在,不报错,sql语句有问题才报错
3>.删除名称为'西游记'的图书
cursor1.execute("delete t_book where title = '西游记';")
print("Affected_rows",conn.affected_rows())

数据库工具类封装

  • 封装的目的 : 将数据库常用的操作,封装成类中的方法,使用时提供要执行的SQL语句给方法即可执行
  • 使用者无需担心建立连接,创建游标,关闭游标连接等
  • 查询一条记录
# 导包
import pymysql
# 定义数据库工具类
class DBTools(object):"""创建连接-类方法,可以直接使用类名调用"""# 1.类方法实现create,方便将来使用,改self-->cls# 2.谁调用,就返回给谁一个连接# 3.查询记录先创建链接,用类名.方法名调用,变量接收调用返回值# 4.设置为私有方法,外部用户不可见#  def __create_conn(cls)@classmethoddef create_conn(cls):conn1=pymysql.connect(host="",port=7061,user="root", password="123456",database="books", charset='utf8')return conn1@classmethod# 查一条记录def query_one(cls,sql):# 这里设为None是由于都定义在try里面,finally识别不出来.my_conn=Nonemy_cursor=Noneres=Nonetry:"""创建连接,借助类名调用类方法 create_conn"""my_conn=DBTools.create_conn()# 创建游标my_cursor=my_conn.cursor()# 执行语句my_cursor.execute(sql)# 提取一条记录res=my_cursor.fetchone()except Exception as err:print("执行查询SQL失败:",str(err))finally:# 关闭游标my_cursor.close()# 关闭连接my_conn.close()# return 之后不能再执行其它语句,所以关闭写前面return res
# 调用
if __name__ == '__main__':result=DBTools.query_one("select * from emp;")print("查询语句的结果:",result)
  • 增删改记录
    # 增删改记录@classmethoddef db_uid(cls,sql):# 创建连接my_conn=DBTools.create_conn()# 创建游标my_cursor=my_conn.cursor()# 执行增删改语句my_cursor.execute(sql)print("Affected rows:",my_conn.affected_rows())my_conn.commit()# 关闭游标my_cursor.close()# 关闭连接my_conn.close()# 调用
if __name__ == '__main__':DBTools.db_uid("update t_book set `read`=100 where id = 3;")
删除员工接口数据库操作
  • 构造测试数据(删除员工id)
    • 在测试删除员工前,通过insert语句插入一个员工id到数据库中
    • 直接使用这个id进行删除
  • 检验测试数据:
    • 删除员工接口请求成功后,通过select查询is_delete字段的值,为1则删除成功!
    • 使用断言实现
  • 基本实现
def test_delete_emp_ok(self):resp=requests.delete(url='http://ihrm-java.itheima.net/api/sys/user/77889900',headers={'Authorization':'61adb484-cdf4-4761-8276-17874caaaf9c'})# 打印响应结果
print(resp.json())
  • 构造测试数据
    def setup(self):# 使用直接封装的 数据库工具,执行insert语句,插入一条带有id记录到数据库中del_sql="insert into bs_user(id,mobile,username) values('77889900','13943970710','abc001');"DBTools.db_uid(del_sql)def teardown(self):del_sql="delete from bs_user where id = 77889900;"DBTools.db_uid(del_sql)
  • 校验is_delete字段
 # 断言77889900所对应的is_delete记录为1res=DBTools.query_one("select is_delete from bs_user where id=77889900;")assert 1 == res[0]
  • 完整代码实现
import pymysql
import requestsfrom py08_db_tools import DBToolsclass TestIhrmDelete(object):def setup(self):# 使用直接封装的 数据库工具,执行insert语句,插入一条带有id记录到数据库中del_sql="insert into bs_user(id,mobile,username) values('77889900','13943970710','abc001');"DBTools.db_uid(del_sql)def teardown(self):del_sql="delete from bs_user where id = 77889900;"DBTools.db_uid(del_sql)def test_delete_emp_ok(self):resp=requests.delete(url='http://ihrm-java.itheima.net/api/sys/user/77889900',headers={'Authorization':'61adb484-cdf4-4761-8276-17874caaaf9c'})# 打印响应结果print(resp.json())assert 200 == resp.status_codeassert True == resp.json().get("success")assert 10000 == resp.json().get("code")assert "操作成功" == resp.json().get("message")# 断言77889900所对应的is_delete记录为1res=DBTools.query_one("select is_delete from bs_user where id=77889900;")assert 1 == res[0]
http://www.dtcms.com/wzjs/812621.html

相关文章:

  • 建站公司有哪些服务中国建设银行网站查工资
  • 中色冶金建设有限公司网站免费软件大全app下载
  • 站长统计芭乐鸭脖小猪手机网站qq咨询代码
  • 便宜的网站建设公司ie浏览器网页版入口
  • 射阳做网站多少钱网站集约化
  • 专门做网站的软件小红书网站开发形式选择
  • 营销型网站建设价格ppt设计说明
  • 财务公司网站模板广东网站建设软件
  • 哪个网站做签约插画师好营销网络的建设怎么写
  • 长乐网站建设wap手机网站开发软件
  • 韩国网站的风格外贸营销词
  • 重庆网站优化排名企业做网站的
  • 购物网站的后台做哪些东西做教育行业营销类型的网站
  • 装饰工程东莞网站建设公司网站备案有什么用
  • 更改网站图标自己做彩票网站犯法吗
  • 成都 做网站 模版四川省住房与城乡建设厅官网
  • 网站建设规划书感受教学资源网站建设设计
  • 代做毕网站乐清 网站建设
  • 青岛建设官方网站外贸网站建设系统
  • 百度小说风云榜排行榜官网seo优化seo外包
  • 兰州最好的网站开发公司网站建设cms系统
  • 烟台软件优化网站优化课程体系
  • 百度如何创建网站潍坊地区制作网站
  • 大连网站开发建站医疗网站建设哪家好
  • 重庆网网站建设公司免费认证网站
  • 免费做免费做人爱视频的网站2021没封的网站有人分享吗
  • 网站页面制作建议深圳专业优定软件网站建设
  • 青海省教育厅门户网站登录wordpress 导航不动
  • 做外贸网站基本流程做3d教学网站
  • 怎么修改网站模板保密和档案网站建设方案