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小时之后的日期

详细示例代码详见我的github:https://github.com/a342058040/requests-Mysql-.git

时间: 2024-08-25 00:03:11

requests从api中获取数据并存放到mysql中的相关文章

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)

Sql Server中的数据类型和Mysql中的数据类型的对应关系(转):https://blog.csdn.net/lilong329329/article/details/78899477 一.SQL SERVER与MySQL数据存储的差异 1.SQL SERVER中的datetime,保留到微秒(秒后小数点3位),而mysql仅保留到秒,转换后是否会影响业务,如果影响,需要新增一个字段专门来存储微秒或者毫秒,虽然mysql中没有时间数据类型的精度到达微秒或者毫秒,但是mysql提供对微秒的

excel表格中的数据如何放到数据库中(非导入)

平时经常用到excel中的数据,想比较两个excel数据的关联性,数据太多,所以放到数据库中,用脚本查询就会比较方便.这里说一下怎么放到数据库中并查询对比. 这里以PL/SQL为例. 需求:有两张表,其中每个表中有一列与另一表的列相同,如何让他们一一对应.如图两个excel 第二张 红框内的数据为相等的数据,现在想查看一一对应关系 方法是: 1.在数据库中建表asad_t1 对应excel1,并多出一个字段,表2asad_t2对应excel2 2.将excel1中数据复制,在plsql中执行se

python将oracle中的数据导入到mysql中。

一.导入表结构.使用工具:navicate premium 和PowerDesinger 1. 先用navicate premium把oracle中的数据库导出为oracle脚本. 2. 在PowerDesinger里找到 File -->> Reverse Engineer --->> Database 将数据库导入到模型. 3  在.PowerDesinger里找到Database"--->"Change Current DBMS" 将数据库

talend 将hbase中数据导入到mysql中

首先,解决talend连接hbase的问题: 公司使用的机器是HDP2.2的机器,上面配置好Hbase服务,在集群的/etc/hbase/conf/hbase-site.xml下,有如下配置: <property> <name>zookeeper.znode.parent</name> <value>/hbase-unsecure</value> </property> 这个配置是决定, Hbase master在zookeeper中

volley源码解析(四)--CacheDispatcher从缓存中获取数据

从上一篇文章我们已经知道,现在要处理的问题就是CacheDispatcher和NetworkDispatcher怎么分别去缓存和网络获取数据的问题,这两个问题我分开来讲. 但是首先说明的是,这两个问题其实是有联系的,当CacheDispatcher获取不到缓存的时候,会将request放入网络请求队列,从而让NetworkDispatcher去处理它: 而当NetworkDispatcher获得数据以后,又会将数据缓存,下次CacheDispatcher就可以从缓存中获得数据了. 这篇文章,就让

是用JDBC从数据库中获取数据并以java对象返回

/** * * @param c * for example Person.class * @param primaryKeys * primaryKeys为主键,参数顺序和表中保持一致 如果id, name 为主键 类名为Person 则 getEntity(Person.class,1,"name") * @return */ public static Object getEntity(Class c, Object... primaryKeys) { PreparedState

【翻译自mos文章】对于oracle 数据库来说,OGG的抽取进程什么时候到database中获取数据?

对于oracle 数据库来说,OGG的抽取进程什么时候到database中获取数据? 参考原文: When GoldenGate Fetches Data From The Database On Extraction For Oracle (Doc ID 1059583.1) 适用于: Oracle GoldenGate - Version 4.0.0 and later Information in this document applies to any platform. 解决方法: 问

hive从查询中获取数据插入到表或动态分区

(前人写的不错,很实用,负责任转发)转自:http://www.crazyant.net/1197.html Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中.现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表employees中. 1 2 3 4 INSERT OVERWRITE TABLE employees PARTITION (cou

Http Get 从服务器中获取数据 存储到本地

package com.http.get; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.apache.http.message.BasicNameValu