Python-通过接口获取token和连接数据库进行sql查询

1、POST方法-通过接口获取token

import requests
host = '10.12.13.15:8886'


def get_token():
    """获取token的函数"""
    url = 'http://' + host + '/oauth/token?v=v5' # 获取token的url
    # 接口的传参
    params = {
        'username': 'bo',
        'password': 'ad2ea0b2ff05427cf115f757bd5d3',
        'grant_type': 'password'
    }

    response = requests.post(url, params)
    # 检查请求是否成功
    if response.status_code == 200:
        # 从响应中获取cookie
        cookies = response.json()["access_token"]
        # 拼接对应鉴权
        headers = "Bearer " + cookies
        return headers


if __name__ == '__main__':
    get_token()

2、连接数据库进行sql查询

import pymysql


def select_allcross(city):
    """数据库查询所在城市的所有路口数据"""
    try:
        # 连接数据库
        db_aitpm = pymysql.connect(host='10.11.13.14', port=8606, user='root', password='2020xmm',db=city, charset='utf8', cursorclass=pymysql.cursors.DictCursor)
        # 使用cursor()方法获取操作游标
        cursor_aitpm = db_aitpm.cursor()
        sql = "SELECT id,name FROM traffic_crossing WHERE use_type='2' and deleted='0'"
        # print(sql)
        # 执行SQL语句
        cursor_aitpm.execute(sql)
        # 获取所有记录列表
        res = cursor_aitpm.fetchall()
        cross_list = {}
        if 0 == len(res):
            print(city, "无数据")
        else:
            # 遍历打印每行记录
            # print(city, '   路口总数: ', len(res))
            for i in range(len(res)):
                # 输出路口ID,调度 和 方案信息
                cross_id = res[i]["id"]
                cross_name = res[i]["name"]
                cross_list[cross_id] = cross_name
        cursor_aitpm.close()
        # 关闭数据库连接
        db_aitpm.close()
        return cross_list
    except Exception as e:
        print(e)


if __name__ == '__main__':
    select_allcross('chaoyang')

3、文件的读写

Python 在文件读写操作中,会使用「内置函数」。

内置函数,包括 open()、read()、readline()、readlines()、write()、writelines()、close() 等方法。

在使用「内置函数」的时候,思路基本上是:
1、打开文件
2、开始「读」或者「写」的操作
3、关闭文件

(1)、open() 打开文件

1 def open_method():
2     file = open("test.text", 'r')  # open()方法中文件的位置路径,如果是在同级目录下,写文件名称即可;
3     print(file.read())  # 「读」的操作
4     file.close()    # 关闭文件
5 
6 
7 if __name__ == '__main__':
8     open_method()

Python 文件的打开模式,有如下几种,且可以组合使用:

 覆盖写入和清空写入的区别

例如:

原来文件内容是:乱花渐欲迷人眼,浅草才能没马蹄   ;写入的内容是:离离原上草,一岁一枯荣

覆盖写入:现在有多少内容就覆盖原来多少内容;       

eg: 修后读出的文件内容就是:离离原上草,一岁一枯荣能没马蹄

清空写入:之前的内容会全部清空;                         

eg: 修后读出的文件内容就是:离离原上草,一岁一枯荣

(2)、read()、readline()、readlines() 读取数据

 ①、read()方法

适用场景:当文件很大的时候,单纯使用 read() 方法就很难一次性读入内存中;

 1 def read_operate():
 2     file = open("test.text", 'r')  # 打开文件、只读
 3 
 4     file.read()  # read()方法读取文件全部内容
 5 
 6     file.close()  # 关闭文件
 7 
 8 
 9 if __name__ == '__main__':
10     readline_operate()
②、readline()方法
 1 def readline_operate():
 2     file = open("test.text", 'r')  # 打开文件、只读
 3 
 4     line = file.readline()  # readline() 读取一行信息
 5     print(line)
 6 
 7     file.close()  # 关闭文件
 8 
 9 
10 if __name__ == '__main__':
11     readline_operate()
③、readlines()方法

使用场景:读取的数据量比较大时

 1 def readlines_operate():
 2     file = open("test.text", 'r')  # 打开文件、只读
 3 
 4     lines = file.readlines()  # readlines() 读取全部信息
 5     # for 循环 一次读取每一行的内容
 6     for line in lines:
 7         print(line, end='')  # end=''  ,关闭默认换行
 8         # print(line)  # 不加 end='',打印出的每一行内容 默认自动包含换行
 9 
10     file.close()  # 关闭文件
11 
12 
13 if __name__ == '__main__':
14     readlines_operate()

执行的结果如下:

 注意:

读写文件的时候,经常会出现一些 IOError 错误异常,建议写在 try…finally… 异常捕获块中,养成良好的编码习惯。

比如,我们经常执行到最后,会忘记关闭文件,这就很可能会带来很多潜在的问题,可以在 finally 中,也就是程序最后会执行的部分,去关闭我们已打开的文件。

例如:

 1 def file_exception_operate():
 2     try:
 3         file = open("test.text", 'r')  # 打开文件、只读
 4 
 5         lines = file.readlines()  # readlines() 读取全部信息
 6         # for 循环 一次读取每一行的内容
 7         for line in lines:
 8             print(line, end='')  # 依次打印输出每一行数据
 9             
10     finally:
11         print('文件出问题了')
12         file.close()   # 关闭文件
13 
14 
15 if __name__ == '__main__':
16     readlines_operate()

(3)、write()、writelines() 写入文件

 ①、write()方法
 1 def write_operate():
 2     # 写入的内容
 3     data = '枯藤老树昏鸦、小桥流水人家、古道西风瘦马;夕阳西下、断肠人在天涯。'
 4 
 5     # 写入文件
 6     with open('write_file.txt', 'r+') as file:
 7         file.write(data)  # 写入一行新数据
 8 
 9 
10 if __name__ == '__main__':
11     write_operate()
②、writelines()方法
 1 def writelines_operate():
 2     # 创建一个列表
 3     txtlist = ['枯藤老树昏鸦\n', '小桥流水人家\n', '古道西风瘦马\n', '夕阳西下\n', '断肠人在天涯\n']
 4 
 5     # 写入文件
 6     with open('write_file.txt', 'r+') as file:
 7         file.writelines(txtlist)
 8 
 9 
10 if __name__ == '__main__':
11     write_operate()

(4)、先写入再读取

 案例如下:

 1 def write_read_operate():
 2     # 写入的内容
 3     data = '枯藤老树昏鸦、小桥流水人家、古道西风瘦马;夕阳西下、断肠人在天涯。'
 4 
 5     # 写入文件
 6     file = open('write_file.txt', 'r+')
 7     file.write(data)  # 写入一行新数据
 8 
 9     # 读取文件
10     # 写入后的文件,光标会停留在最末尾;读取文件时,会从光标所在位置开始读取;不做任何操作直接读取会读不到内容
11     # 此时调用seek(0)方法,可将光标调至文件最开始的位置,此时读取可读到全部内容。
12     file.seek(0)
13     print(file.read())
14     file.close()
15 
16 
17 if __name__ == '__main__':
18     write_read_operate()
  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值