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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM