概述
业务场景需求及实现逻辑分析
在业务中,我们经常会碰到需要用HTTP GET请求数据的情况,比如http请求返回的结果如下所示:
那么,如果我们想将这些数据用mysql存储下来,那该怎么实现呢?
其实,调用python的httplib
和MySQLdb
包将会非常容易实现,httplib
负责获取url的返回,MySQLdb
负责对MySQL数据库进行操作。下面整理了关系逻辑图:
那么,我们开始代码开发:
python依赖包准备
python需要用到的包至少有如下几个,其中MySQLdb依赖包的安装可以参考python安装mysql的依赖包mysql-python
# 此为python文本编辑器界面
#!/usr/bin/python
# coding=utf-8
import httplib
import json
import time
import MySQLdb
用httplib获取url请求返回
httplib包支持如下的一些方法和函数:
url = "http://www.testtesttest.com/mobile/kit?token=yyyyyyyyy&key=tttttt&size=1" #具体的url链接
conn = httplib.HTTPConnection("www.testtesttest.com")
conn.request(method="GET", url=url) #指定GET方法,以及url对象
response = conn.getresponse() #创建response对象
res = response.read() #读取url返回的内容
# 使用json.loads方法将json解码为python对象
json_repose = json.loads(res)
data = json_repose['data']
此时,http请求返回的所有信息都存在了对象res中,因为请求返回的是json字符串,上面我们采用了json.loads方法来解析。
可以留意到,最终我们将请求返回的json内容,都存到了python的对象中里,而一旦将数据转为数组或者元组等形式储存,我们就可以用python自带的函数对其进行解析或者其他操作了。
用python解析url请求返回的json
# 这里我们定义了一个函数用于解析json
def data_list_analyze(i):
data_dict = data[i]
status = data_dict['status']
devi_id = data_dict['devi_id']
update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(data_dict['update_time']))
actived_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(data_dict['actived_time']))
return devi_id, imei, device_type, actived_time
python连接数据库并写入数据
接下来是数据库的连接示例:
# 打开数据库连接,指定数据库ip、用户名、密码、连接的库名
db = MySQLdb.connect("192.168.xxx.xxx", "db_user", "db_password", "db_database", charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 建表sql语句
sql = """create table if not exists `gergsmart_list`(
`devi_id` varchar(255) NOT NULL COMMENT 'IMEI, //硬件设备 IMEI',
`imei` varchar(255) COMMENT 'ICCID,//硬件设备 SIM卡',
`device_type` varchar(255) COMMENT '设备类型',
`actived_time` datetime COMMENT '⾸次激活时间',
PRIMARY KEY(`devi_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
"""
# 使用execute方法执行SQL语句,建表
cursor.execute(sql)
# 插入数据sql语句
insert_sql = "insert into `gergsmart_list`
(devi_id,imei,device_type,actived_time)
values (%s, %s, %s, %s,)"
从上面可以留意到,我们可以将python解析得到的对象devi_id、imei、device_type、actived_time,放入了mysql的插入语句中去,这样我们就实现了“从url获取数据,存到python对象中,再将python对象插入到mysql的记录中”这样的操作了。
总结,其实我们可以将python看作为一个中转器,接收url请求返回,并写入MySQL。而其中httplib
负责了接收操作,MySQLdb
负责了写入操作。
最后
以上就是激动蚂蚁为你收集整理的用mysql记录从url返回的http GET请求数据的全部内容,希望文章能够帮你解决用mysql记录从url返回的http GET请求数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复