欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python解析json內(nèi)容存入數(shù)據(jù)庫方式

 更新時(shí)間:2025年05月24日 15:41:07   作者:知識倒進(jìn)我腦里  
這篇文章主要介紹了python解析json內(nèi)容存入數(shù)據(jù)庫方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

用python寫一個(gè)Github Trending API

由于才開始學(xué)習(xí)python,很多東西都不會,花了好多天來把這個(gè)東西寫好,于是記錄如下。

要求

用requests庫抓取熱門倉庫的信息,并存入數(shù)據(jù)庫

1.用到的庫

import requests
from sqlalchemy import desc, create_engine, Column, Integer, String, Text  # 降序、連接路徑、列、字符串、文本
from sqlalchemy.orm import scoped_session, sessionmaker  # 代理模式、數(shù)據(jù)庫連接的媒(手機(jī));engine號碼
from sqlalchemy.ext.declarative import declarative_base  # 聲明類映射類到表的關(guān)系

2.抓取url

url = 'http://132.232.132.144:8009/api?lang=python&since=daily'
response = requests.get(url)

3.解析內(nèi)容

response_dict = response.json()

內(nèi)容大致是這些:字典里面三個(gè)元素,第三個(gè)元素msg是一個(gè)列表,列表里面是各個(gè)熱門倉庫的信息

我們要分析的就是msg里面的內(nèi)容

repositories = response_dict['msg']

遍歷列表字典

for res in repositories:
    language = res['language']
    user = res['user']
    stars = res['stars']
    repo = res['repo']
    forks = res['forks']
    about = res['about']
    link = res['link']
    new_stars = res['new_stars']
    avatars = res['avatars']
    api_info = {
        # 項(xiàng)目名稱
        'repo': repo,
        # 語言
        'language': language,
        # 倉庫擁有者
        'user': user,
        # star數(shù)
        'stars': stars,
        # fork數(shù)
        'forks': forks,
        # 描述
        'about': res['about'],
        # 鏈接
        'link': res['link'],
        # 新增star
        'new_stars': res['new_stars'],
        # 頭像
        'avatars': res['avatars']

    }

4.連接數(shù)據(jù)庫

# 創(chuàng)建連接:'數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動名稱://用戶名:口令@機(jī)器地址:端口號/數(shù)據(jù)庫名'
engine = create_engine('mysql+pymysql://root:19981010@localhost:3306/oceanlay?charset=utf8mb4')

# 連接數(shù)據(jù)庫的路徑。
# “mysql+mysqldb”指定了使用 MySQL-Python 來連接,
# 聲明類 類到表的關(guān)系
Base = declarative_base()
# 創(chuàng)建數(shù)據(jù)表
Base.metadata.create_all(engine)

#定義python類

class Api(Base):
    __tablename__ = 'api'
    id = Column(Integer, primary_key=True)    #主鍵primary_key必須存在于某個(gè)字段中 
    repo = Column(String(128))  # repository name    #注意字段的數(shù)據(jù)類型與數(shù)據(jù)長度,設(shè)置相對應(yīng)的類型
    language = Column(String(6))  # repository language
    user = Column(String(128))  # user
    stars = Column(String(128))
    forks = Column(String(128))
    link = Column(Text)
    new_stars = Column(String(128))

    def __repr__(self):
        return "<Api(id='%d',repo=%s,language=%s,user=%s,stars=%d,forks=%d,link=%s,new_stars=%s)>" \
               % (self.repo, self.language, self.user, self.stars, self.forks, self.link, self.new_stars,)
# 向表中插入數(shù)據(jù)
DBSession = sessionmaker(bind=engine)  #sessionmaker好比數(shù)據(jù)庫和內(nèi)容聯(lián)系的手機(jī),engine就是聯(lián)系號碼
session = DBSession()
# 寫入數(shù)據(jù)
session.add(
    Api(repo=api_info['repo'], language=api_info['language'], user=api_info['user'], stars=api_info['stars'],
        forks=api_info['forks'], link=api_info['link'], new_stars=api_info['new_stars'])
        )    #注意添加到哪一個(gè)表里面 就寫那個(gè)表

遍歷輸出:format函數(shù)

for res in repositories:
    print("倉庫名:{repo}\n語言:{language}\n用戶:{user}\nstars:{stars}\nforks:{forks}\n項(xiàng)目描述about:{about}\n網(wǎng)址:{link}\n關(guān)注者頭像:{avatars}".format(repo=res['repo'], language=res['language'],  user=res['user'], stars=res['stars'],forks=res['forks'], about=res['about'], link=res['link'],avatars=res['avatars']))

Questions

遍歷列表字典時(shí),一直得到的只有第一個(gè)倉庫的東西,后來將寫入數(shù)據(jù)的代碼放入遍歷循環(huán)中,ok!

連接數(shù)據(jù)庫時(shí),(還沒學(xué)過數(shù)據(jù)庫555),對應(yīng)的端口、用戶開始沒搞清楚,一直沒有連接成功

先建表再寫數(shù)據(jù),表內(nèi)字段也要建好才可以,不然寫不進(jìn)去的,要注意數(shù)據(jù)類型和數(shù)據(jù)長度,不然會產(chǎn)生各種報(bào)錯!

PS:由于熱門項(xiàng)目的url得到的是html內(nèi)容 雖然用beautifulsoup可以將內(nèi)容提取出來 但是我太菜了 我提到一半不知道怎么搞了,于是就用了博主直接提供的api。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pd.drop_duplicates刪除重復(fù)行的方法實(shí)現(xiàn)

    pd.drop_duplicates刪除重復(fù)行的方法實(shí)現(xiàn)

    drop_duplicates 方法實(shí)現(xiàn)對數(shù)據(jù)框 DataFrame 去除特定列的重復(fù)行,本文主要介紹了pd.drop_duplicates刪除重復(fù)行的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • python中的全局變量用法分析

    python中的全局變量用法分析

    這篇文章主要介紹了python中的全局變量用法,詳細(xì)分析了Python全局變量使用中的利弊與相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python基于mediainfo批量重命名圖片文件

    Python基于mediainfo批量重命名圖片文件

    這篇文章主要介紹了Python基于mediainfo批量重命名圖片文件的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 使用Python腳本備份華為交換機(jī)的配置信息

    使用Python腳本備份華為交換機(jī)的配置信息

    在現(xiàn)代網(wǎng)絡(luò)管理中,備份交換機(jī)的配置信息是一項(xiàng)至關(guān)重要的任務(wù),備份可以確保在交換機(jī)發(fā)生故障或配置錯誤時(shí),能夠迅速恢復(fù)到之前的工作狀態(tài),本文將詳細(xì)介紹如何使用Python腳本備份華為交換機(jī)的配置信息,需要的朋友可以參考下
    2024-06-06
  • Python3之字節(jié)串bytes與字節(jié)數(shù)組bytearray的使用詳解

    Python3之字節(jié)串bytes與字節(jié)數(shù)組bytearray的使用詳解

    今天小編就為大家分享一篇Python3之字節(jié)串bytes與字節(jié)數(shù)組bytearray的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python爬取股票交易數(shù)據(jù)并可視化展示

    Python爬取股票交易數(shù)據(jù)并可視化展示

    拋開炒股技術(shù)不說,?那么多股票數(shù)據(jù)是不是非常難找,找到之后是不是看著密密麻麻的數(shù)據(jù)是不是頭都大了?今天帶大家爬取雪球平臺的股票數(shù)據(jù)并將其可視化
    2021-12-12
  • 深入探究Flask的兩個(gè)高級特性之藍(lán)圖和JWT認(rèn)證

    深入探究Flask的兩個(gè)高級特性之藍(lán)圖和JWT認(rèn)證

    本文將探討 Flask 的兩個(gè)高級特性:藍(lán)圖(Blueprints)和 JSON Web Token(JWT)認(rèn)證,藍(lán)圖讓我們可以將應(yīng)用模塊化,以便更好地組織代碼;而 JWT 認(rèn)證是現(xiàn)代 Web 應(yīng)用中常見的一種安全機(jī)制,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • python獲取array中指定元素的示例

    python獲取array中指定元素的示例

    今天小編就為大家分享一篇python獲取array中指定元素的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 使用Python實(shí)現(xiàn)計(jì)算DICOM圖像兩點(diǎn)真實(shí)距離

    使用Python實(shí)現(xiàn)計(jì)算DICOM圖像兩點(diǎn)真實(shí)距離

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)計(jì)算DICOM圖像兩點(diǎn)真實(shí)距離,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Python3.2模擬實(shí)現(xiàn)webqq登錄

    Python3.2模擬實(shí)現(xiàn)webqq登錄

    這篇文章主要介紹了Python模擬實(shí)現(xiàn)webqq登錄的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論