zoukankan      html  css  js  c++  java
  • requests从api中获取数据并存放到mysql中

    python的requests库是一个非常强大的库,requests的安装方法十分简单,用:

    pip install requests

    即可安装requests,安装成功后:

    import requests

    即可导入requests模块,requests有get和post两种方法:

    1、requests.get()用法:

     url = "http://xxx"
     a_content = requests.get(url)
     aa = a_content.content   #.content和.text的作用是一样的
     a_json = json.loads(aa)

    这里说一下 json.loads和json.dumps,这是json模块的两个函数,分别进行解码和编码JSON数据, json.loads将json数据对象转换为python对象,相反,json.dumps是将python对象转换为json数据对象

    我们得到的 a_json是一个字典嵌套列表的结构,通过字典的key可以获取其对应的value,然后可以解析每个字段,如:

    version_name = a_json[0]['latest_release']['package']['name']
    a_json是一个列表,列表中第0个元素是一个字典,依次取字典中的key,最终得到version信息

     2、requests.post()用法:

    requests.post()用法基本与requests.get()相同,但是requests.post可以接受带参数的请求,可以包含token等信息:

    复制代码
    payload = {
                "access_token": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
                "request_body": {
    
                }
            }
    
    headers = {'content-type': 'application/json'}
    url = r"http://xxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxx"
    re = requests.post(url, data=json.dumps(payload), headers=headers)
    r = json.loads(re.text)
    复制代码

    python连接MySQLdb:

    复制代码
    db1 = MySQLdb.connect(
                host="localhost",
                db="",
                user="root",
                passwd="",
                port=3306,
                charset='utf8'
            )
    
    cur2 = db1.cursor()
    cur2.execute('xxxxxxxxxxx')
    sql1 = """create table table_deploy(id INT (11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT ,appid int not null
                                        ,timestamp VARCHAR(50)
                                      ,deploy_id INT
                                      )"""
    
    cur2.execute(sql1)
    db1.commit()
    复制代码

    这是python连接mysql的原始方法,如果用的是Django则自带ORM,Django的Models内部封装了mysql的方法

    MySQLdb.connect()表示打开数据库连接,db1.cursor()表示使用cursor()方法获取操作游标 ,cur2.execute('xxxxxxxxxxx')表示使用execute方法执行SQL语句,sql1 =xxx  表示创建数据表SQL语句

    时间戳相关转换,我们知道从接口获取的时间往往不是我们想要的时间格式,这里需要进行时间转换:

    now_time = int(time.time())  # 当前时间的时间戳
    复制代码
    timeArray = time.strptime(timestamp, "%Y-%m-%d %H:%M")  

    #timestamp是时间字符串,strptime函数根据指定的格式把时间字符串解析为时间元组
    timeStamp_1 = int(time.mktime(timeArray))
    #将时间元组转换为时间戳
    timeArray11 = time.localtime(timeStamp_1)
    #利用localtime()将时间戳转换为时间数组
    
    
    dateStr= time.strftime("%Y-%m-%d %H:%M:%S", timeArray1)
    #再将时间数组转换为指定格式的时间字符串
    datetimeObj = datetime.datetime.strptime(dateStr, "%Y-%m-%d %H:%M:%S")
    #将字符串日期转换为datetime
    data_hours_after = datetimeObj + datetime.timedelta(hours=16)
    #转换为datetime之后可以对日期进行加减,表示16小时之后的日期
    复制代码
  • 相关阅读:
    网络流练习
    Noip2018 游记
    4719: [Noip2016]天天爱跑步
    1875: [SDOI2009]HH去散步
    P2619 [国家集训队2]Tree I
    1493: [NOI2007]项链工厂
    P1710 地铁涨价
    P3694 邦邦的大合唱站队
    P1439 【模板】最长公共子序列
    P1132 数字生成游戏
  • 原文地址:https://www.cnblogs.com/chenliyang/p/6548322.html
Copyright © 2011-2022 走看看