(5)py接口自动化之配置文件&数据库连接详解

2023-05-16

目录

一、配置文件(ini&yaml)

1、作用

2、ini

        A、语法

         B、特点

        C、操作方法

3、yaml

        A、安装第三方库

        B、支持的数据类型

        C、特性

        D、语法

        E、数据读取

二、数据库连接与pytho配置文件

1、安装数据库

2、数据库使用

3、使用python配置文件进行数据库连接

4、封装

一、配置文件(ini&yaml)

1、作用

用来做软编码的,写死就叫硬编码

例如:

import requests

def login(user, password):
data = {"user": "admin", "password": "123456"}  # 硬编码
# 从配置文件中取相应的参数
data = {"user": user, "password": password}  # 软编码
res = requests.post(url="/login", json=data)
return res.json()

注:实际上在python自动化中这两种配置文件都是用不上的,因为相比较python文件来说。操作都比较复杂,但是因为服务端会用到,所以我们要了解 

2、ini

        A、语法

                1、自己创建一个xxx.ini文件作为配置文件

                2、内容格式如下

[user] # section
user_name = admin  # key  value
pass_word = 123456  # key  value
[host]  # section
host = www.baidu.com  # key  value

               3、理解:可以理解成一个嵌套的字典 ,上述内容就等同于

{"user":{"user_name":"admin","pass_word":"123456"},
 "host":{"host":"www.lenmon.com"}
}
                  }

         B、特点

                1、一个ini文件中的section不能重复

                2、同一个section中的key不能重复

                3、默认数据类型是字符串(就是不用加双引号也是字符串类型)

        C、操作方法

                1、获取section

# 导入所需要的类
from configparser import ConfigParser

# 实例化类
conf = ConfigParser()
# 因为这个类是继承RawConfigParser()类,read()方法是父类的方法,所以可以直接调用
# 这个是读到缓存中,是一个对象
conf.read(filenames="test.ini", encoding="utf-8")
# 获取所有的sections,返回list
res = conf.sections()
print(res)

# 输出结果:['user', 'host']

               2、获取section下的key(接上述代码)

# 拿到sections下边的key,要使用准确的sections,返回list
# 获取”user“下边的key
k1 = conf.options(section="user")
print(k1)
# 输出结果:['user_name', 'pass_word']

                3、获取key对应的value

# 获取key对应的value
# 获取user下边user_name的值
v1 = conf.get(section="user", option="user_name")
print(v1)
# 输出结果:admin

3、yaml

        A、安装第三方库

                pip install PyYAML

        B、支持的数据类型

                1、支持字典 通过": "来定义(注意那冒号后边有个空格)

                  如:key1: val1 

                2、支持列表 通过“- ” 来定义(注意那-后边有个空格) 

                   如:- list1

                           - list2     

        C、特性

                1、读取出来的是python对象

                2、区分大小写的

                3、通过缩进来表示层级关系(可以字典嵌套列表,可以字典嵌套字典)

                4、如果是字典类型,同一级别的key不能重复

                5、只要是左对齐,就认为是同一级别

                6、文件中只能包含一种数据类型,同时存在多种数据类型会报错

                7、通过# 注释

                8、不支持列表嵌套列表

                9、不支持一个一个读取,只能一次性读取全部

        D、语法

# 创建test1.yaml
# 字典类型
key1: val1
key2: val2
key3: val3
# 创建test2.yaml
# 这个是列表类型
- list1
- list2
- list3
# 创建test3.yaml
# 这个是字典嵌套字典
key1: val1
key2: val2
key3:
    key4: val4
    key5: val5
# 这个是字典嵌套列表
# 创建test4.yaml
key:
    - list1
    - list2

        E、数据读取

# 导入yaml
import yaml

# 读取文件
file = open(file="test4.yaml", encoding="utf-8")

# stream,传文件流
# Loader=yaml.FullLoader
# 读取所有内容
values = yaml.load(stream=file, Loader=yaml.FullLoader)
print(values)
# 输出:{'key': ['list1', 'list2']}

# 读取某一个具体数据
print(values["key"][0])
# 输出:list1

# 用完关闭
file.close()

注:我这里的数据读取是以test4为例的,感兴趣的同学可以自己输出其他文件看看。test1、test3、test4对外都是字典类型,可以放在一个文件中 

二、数据库连接与pytho配置文件

1、安装数据库

        pip install pymysql

2、数据库使用

# 导入库
import pymysql

# 创建连接
conn = pymysql.connect(host="192.168.1.X", # 数据库地址,这个是我本地的,同学们记得更换
                       port=3306,
                       user="root",
                       password="123456",
                       db="local", # 数据库名
                       charset="utf8",
                       autocommit=True,  # 自动提交
                       # 游标
                       # 默认返回元组类型
                       # 设置返回为字典,字典嵌套在list中返回,一行数据为一个字典
                       cursorclass=pymysql.cursors.DictCursor
                       )

# 创建游标,可理解为Navicat中的一个新建查询页面
cur = conn.cursor()

# sql语句
sql = "select * from student "

# 执行sql语句
cur.execute(sql)

# 以下三种方法在执行时只能使用其中一条

# 1、取所有的执行结果
res = cur.fetchall()
print(res)
# 输出:[{'id': 1, 'name': '张三', 'age': 16}, {'id': 2, 'name': '李四', 'age': 18}, {'id': 3, 'name': '王五', 'age': 19}]

# 2、返回查询到的第一条数据
res = cur.fetchone()
print(res)
# 输出:{'id': 1, 'name': '张三', 'age': 16}

# 3、返回自定义数据条数(获取两条数据)
# 不传默认返回第一条
res = cur.fetchmany(2)
print(res)
# 输出结果:[{'id': 1, 'name': '张三', 'age': 16}, {'id': 2, 'name': '李四', 'age': 18}]


# 手动提交修改,修改的时候才需要提交
# 也可以在连接的时候设置自动提交
conn.commit()
# 关闭游标
cur.close()
# 用完关闭连接,可直接使用这个关闭
conn.close()

3、使用python配置文件进行数据库连接

        A、首先在创建一个py文件,作为配置文件

# 测试数据库连接
mysql_info_test = {
    "host": "192.168.1.6",
    "port": 3306,
    "user": "root",
    "password": "123456",
    "db": "local",
}

# 预发数据库连接
mysql_info_res = {
    "host": "192.168.1.170",
    "port": 13306,
    "user": "root",
    "password": "123456",
    "db": "local",
}

        B、使用配置文件中的测试数据库


import pymysql

# 从创建的setting文件中导入mysql_info_test对象
from setting import mysql_info_test
# 创建连接
# 可以直接使用导入的配置文件中的对象参数,根据对象的数据类型获取所需数据
conn = pymysql.connect(host=mysql_info_test["host"], 
                       port=mysql_info_test["port"],
                       user=mysql_info_test["user"],
                       password=mysql_info_test["password"],
                       db=mysql_info_test["db"],
                       charset="utf8",
                       autocommit=True,  # 自动提交
                       # 游标
                       # 默认返回元组类型
                       # 设置返回为字典,字典嵌套在list中返回,一行数据为一个字典
                       cursorclass=pymysql.cursors.DictCursor
                       )
# 创建游标,可理解为Navicat中的一个新建查询页面
cur = conn.cursor()
# sql语句
sql = "select * from student "
# 执行sql语句
cur.execute(sql)
# 取所有的执行结果
res = cur.fetchall()
print(res)

# 手动提交修改,修改的时候才需要提交
# 也可以在连接的时候设置自动提交
conn.commit()
# 关闭游标
cur.close()
# 用完关闭连接,可直接使用这个关闭
conn.close()

4、封装

import pymysql
from setting import mysql_info_test

# 创建一个类
class HandleMysql:
    # 将数据库连接和创建游标写成实例属性,可以全局使用
    # 将数据库的基本信息作为参数,因为实际应用中我们需要在不同的环境跑
    def __init__(self, mysql_info):
        self.conn = pymysql.connect(host=mysql_info["host"],
                                    port=mysql_info["port"],
                                    user=mysql_info["user"],
                                    password=mysql_info["password"],
                                    db=mysql_info["db"],
                                    charset="utf8",
                                    autocommit=True,
                                    cursorclass=pymysql.cursors.DictCursor
                                    )
        self.cur = self.conn.cursor()
    
    # 创建执行sql的方法,将sql语句作为参数
    def get_data(self, sql):
        self.cur.execute(sql)
        res = self.cur.fetchall()
        return res

    # 创建连接关闭方法
    def close_mysql(self):
        self.cur.close()
        self.conn.close()


if __name__ == '__main__':
    sql = "select * from student where id =1 "
    cl = HandleMysql(mysql_info_test)
    res = cl.get_data(sql)
    print(res)
    cl.close_mysql()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(5)py接口自动化之配置文件&数据库连接详解 的相关文章

  • 4.ROS&PX4--运行官方offboard起飞程序

    1 创建空间 span class token function mkdir span catkin ws span class token builtin class name cd span catkin ws span class t
  • 【信息奥赛题解】昆虫繁殖(详细分析题解 & C++ 代码)

    昆虫繁殖问题 x1f31f 题目名称 昆虫繁殖 题目描述 科学家在热带森林中发现了一种特殊的昆虫 xff0c 这种昆虫的繁殖能力很强 每对成虫过 X X X 个月后开始产卵 xff0c 每月产 Y Y
  • MybatisPlus-乐观锁&悲观锁

    乐观锁 xff1a 每次不加锁而是假设没有冲突而去完成某项操作 xff0c 如果失败就重试 xff0c 直到成功为止 悲观锁 xff1a synchronized是独占锁即悲观锁 xff0c 会导致其他所有需要锁的线程挂起 xff0c 等待
  • 虚拟化技术介绍 & hypervisor简介

    什么是虚拟化 xff1f 虚拟化 xff08 英语 xff1a Virtualization xff09 是一种资源管理技术 xff0c 是将计算机的各种实体资源 xff0c 如服务器 网络 内存及存储等 xff0c 予以抽象 转换后呈现出
  • Docker 删除&清理镜像

    文章首发自个人网站 xff1a https www exception site docker docker delete image 本文中 xff0c 您将学习 Docker 如何删除及清理镜像 xff1f 一 通过标签删除镜像 通过如
  • [Machine Learning & Algorithm] 随机森林(Random Forest)

    1 什么是随机森林 xff1f 作为新兴起的 高度灵活的一种机器学习算法 xff0c 随机森林 xff08 Random Forest xff0c 简称RF xff09 拥有广泛的应用前景 xff0c 从市场营销到医疗保健保险 xff0c
  • OpenGL进阶 | GLM数学库& Shader相关

    一 GLM数学库 OpenGL和DirextX不一样 xff0c 没有内置的数学库 xff0c 于是我们需要找一个第三方数学库来完成OpenGL相关的数学计算 GLM库是一个为OpenGL准备的数学库 xff0c 它提供了各种数学运算的函数
  • Kibana学习&理解

    注 xff1a 本篇的kibana基于7 5 1版本 Kibana是什么 xff1f kibana是一个数据可视化平台 展示与分析 将es里面的东西通过各种图表展示出来 xff0c 还可以执行es的各种搜索 amp 监控 Kibana环境搭
  • 指针p,*p,&p之间的区别

    假设我们定义一个指针p 那么会经常使用到三个符号 xff1a 1 xff0c p xff1b p是一个指针变量的名字 xff0c 表示此指针变量指向的内存地址 xff0c 如果使用 p来输出的话 xff0c 它将是一个16进制数 2 xff
  • CMake&CMakeList.txt

    1 各种关系 在各种开源项目中 xff0c 经常会发现项目中除了代码源文件 xff0c 还包含了 CMakeList txt Makefile 文件 xff0c 在项目的编译时候需要用到的命令有 cmake make 我们本次想搞清楚他们之
  • 递归遍历无限极分类菜单、菜单树。(php版&&java版)

    文章目录 php版java版 php版 span class token operator lt span span class token operator span php span class token comment 定义一个数组
  • 数组名a+1和&a+1的区别

    C C 43 43 里面的数组名字会退化为指针 xff0c 所以数组名a实际指的是数组的第一个元素的地址 而数组名作为指针来讲有特殊性 xff0c 它正在它所指向的内存区域中 xff0c amp a的值和a的数值是相同的 xff08 可以输
  • 传感模块:MATEKSYS Optical Flow & LIDAR 3901-L0X

    传感模块 xff1a MATEKSYS Optical Flow amp LIDAR 3901 L0X 1 模块介绍2 规格参数3 使用方法Step1 接线方式Step2 安装方式Step3 使用范围 4 存在问题 思考 4 1 MATEK
  • AMP:参考xapp-1078和xapp1079的一些建议

    Linux系统默认是SMP模式 xff0c 有时我们也需要AMP模式进行开发 参考网站 xff1a wiki xilinx com 有xapp1078 xapp1079最新版本的AMP demo www arm com 主要是介绍arm系列
  • C++编程(五)--- Cmake详解&Makefile详解

    C C 43 43 程序员肯定离不开Makefile和Cmake xff0c 因为如果对这两个工具不熟悉 xff0c 那么你就不是一个合格的C C 43 43 程序员 本文对Makefile和Cmake xff0c 及它们的使用进行了详细的
  • 无人机拉力测试台研制&测试过程中的9个关键技术点

    随着近年来无人机行业的飞速迭代发展 xff0c 越来越多的相关从业人员选择使用拉力测试台来测试并优化无人机的动力系统 xff0c 本文尝试从无人机拉力测试台的研制和使用角度来阐述无人机拉力测试中的9个关键技术点 1 电磁干扰方面的考虑 测试
  • cv::imread(cv::String const&, int)’未定义的引用

    在 Makefile文件的195 行 LIBRARIES 43 61 opencv core opencv highgui opencv imgproc 后面添加 xff1a opencv imgcodecs opencv videoio修
  • c语言中&与&&区别

    c语言中 amp 与 amp amp 的区别 amp xff1a 按照位与操作 xff0c 例如 xff1a 0010 amp 1101 xff0c 结果为0000 amp 是java中的位逻辑运算 xff1a eg xff1a 2 amp
  • Jetson Xavier NX 配置(七)—— 数据传输之socket文件传输 & usb摄像头RTSP视频推流

    目录 1 Python socket 文件传输 xff08 1 xff09 发送单个文件 xff08 一次性 xff09 xff08 2 xff09 发送一个文件夹下的所有文件 xff08 一次性 xff09 xff08 3 xff09 发
  • linux中断&poll&selcet按键处理机制

    在上一篇linux按键中断处理中 xff0c 我们采用按键中断处理获取按键 xff0c 在read函数中阻塞读取 xff0c 当按键发生时 xff0c read自动解除阻塞 xff0c 实现应用层读取到相应的按键值 在上一节中如果没有按键到

随机推荐

  • 微软牵手大疆打造先进无人机技术

    2018微软人工智能大会正式开幕 xff0c 在大会上微软宣布 xff0c 全球最大的无人机制造商大疆创新 DJI 正在与微软合作 xff0c 打造面向企业市场的先进无人机技术 大疆创新首席科学家吴迪表示 xff0c 基于双方的战略合作 x
  • Linux环境使用VSCode调试简单C++代码

    本文将通过演示一个简单C 43 43 代码的编译调试过程 xff0c 介绍在VSCode中如何使用Linux环境下的GCC C 43 43 编译器 g 43 43 和GDB 调试器 gdb 关于GCC g 43 43 gcc gdb xff
  • layui date控件的使用

    最近项目多用layui xff0c 就总结一下 span class token tag span class token tag span class token punctuation lt span div span span cla
  • putty超时解决方案

    putty连续3分钟左右没有输入 就自动断开 然后必须重新登陆 很麻烦 在网上查了很多资料 发现原因有多种 环境变量TMOUT引起 ClientAliveCountMax和ClientAliveInterval设置问题或者甚至是防火墙的设置
  • 最好的黑客网站

    全国最早最大的黑客网站 黑客基地 xff1a http vip hackbase com 学黑客必去的网站 黑客基地 xff1a http www hackbase com 新手学黑客快速入门的好地方 xff1a http vip hack
  • mysql-connector-java-5.1.40-bin.jar包

    mysql connector java 5 1 40 bin jar 链接 xff1a https pan baidu com s 1G7 FsxkEJfZ4Cy6R s5j g 提取码 xff1a 5r5o
  • 利用spm12将dicom医学图像格式转成NII格式

    废话不多说 xff0c 直接上干货 xff0c 一 首先下载spm12 国外的下载源 xff0c 比较慢 xff0c 这里有百度网盘 xff0c 需要的直接下载 xff1a 链接 xff1a https pan baidu com s 1Z
  • securityCRT ssh远程开启mysql,断开连接后,mysql服务就停止服务

    问题描述 xff1a ssh远程连接服务器 xff0c 在服务器中开启mysql服务 xff0c 在正常断开ssh 连接后 xff0c 重新连接口查看mysql的状态发现 xff0c mysql的状态 xff1a 重新启动mysql xff
  • py基础之掷骰子游戏的实现

    掷骰子游戏 xff08 循环的使用及掌握 xff09 0 两个骰子都是1 6 1 玩游戏要有金币 xff0c 没有金币不能玩游戏 2 玩一局游戏赠金币一枚 xff0c 充值获得金币 3 充值为10元的倍数 xff0c 10元 20个金币 x
  • centOS 不能上外网怎么下载依赖 (通过挂载镜像)

    问题 我们在服务器上部署系统环境的时候 xff0c 常常会遇到找不到该命令 bash span class token operator span span class token punctuation span span class t
  • linux 搭建FTP服务器

    linux 搭建FTP服务器 网上对于ftp搭建有很多 xff0c 但是说的比较的麻烦 xff0c 而且十分容易出错 xff0c 并且在创建完成后存在一些配置的注意事项 废话不多说 xff0c 现在开始 1 安装 vsftpd 安装FTP服
  • 提取论文中公式神奇(写论文的福音)

    写论文还在愁怎么写复杂的公式吗 xff0c 想引用其他的论文的公式 xff0c 发现都是这样的 P X i
  • java中list.add添加元素覆盖之前的问题

    1 在码代码时 xff0c 发现一个问题 xff1a 使用 list lt object gt list 61 new Arraylist lt object gt list add object xff1b 出现之前添加的元素被最后的元素
  • 线性最优解java实现+Cplex java调用

    一 xff1a cplex的使用 xff1a 1 1 导入cplex jar 包的地址 xff1a https pan baidu com s 1Q0Bv24EQdelV2rY IrLoZQ 提取码 xff1a xn14 1 2 将cple
  • KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别

    首先感谢博主倔强的小彬雅 xff0c 本文使用的素材及部分代码来源其博文机器学习入门 用KNN实现手写数字图片识别 xff08 包含自己图片转化 xff09 xff0c 需要下载素材的可以到其博文最后进行下载 关于KNN算法 knn算法也叫
  • 如何学习开源飞控

    前言 有一段时间没有更新文章了 新的一年新气象 xff0c 因此还是要抽出时间 xff0c 写点总结与思考 xff0c 对自己的成长也是很有帮助 今天主要想聊一下开源飞控的学习 本人在5年前 xff0c 在知乎下写过一篇回答 xff0c 如
  • 控制系统的观测器基础知识

    1 为什么需要用到观测器 控制原理中的系统框图 xff0c 往往都是假设反馈状态为理想值 但在工程实践中 xff0c 这个是做不到的 一般我们采用传感器测量控制的反馈状态 xff0c 而传感器的测量值 xff0c 存在几个问题 xff1a
  • 浅谈飞控的软件设计

    写在前面 开这个专栏的目的主要是深感自己对飞控软件 算法的知识点过于杂乱 xff0c 很久没有进行系统的总结了 xff0c 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 xff0c 如内容有错误 xf
  • 飞控IMU数据进阶处理(FFT,滤波器)

    前面的文章 xff08 知乎专栏 https zhuanlan zhihu com c 60591778 xff09 曾简单讲过IMU数据 xff08 陀螺仪 加速度数据 xff09 的校准以及一阶低通滤波 本文在此基础上更进一步讲一下数据
  • (5)py接口自动化之配置文件&数据库连接详解

    目录 一 配置文件 ini amp yaml 1 作用 2 ini A 语法 B 特点 C 操作方法 3 yaml A 安装第三方库 B 支持的数据类型 C 特性 D 语法 E 数据读取 二 数据库连接与pytho配置文件 1 安装数据库