python解析json内容存入数据库方式

作者:

文章目录
  • 由于才开始学习python,很多东西都不会,花了好多天来把这个东西写好,于是记录如下。
  • 遍历列表字典时,一直得到的只有第一个仓库的东西,后来将写入数据的代码放入遍历循环中,ok! 连接数据库时,(还没学过数据库555),对应的端口、用户开始没搞清楚,一直没有连接成功 先建表再写数据,表内字段也要建好才可以,不然写不进去的,要注意数据类型和数据长度,不然会产生各种报错! PS:由于热门项目的url得到的是html内容 虽然用beautifulsoup可以将内容提取出来 但是我太菜了 我提到一半不知道怎么搞了,于是就用了博主直接提供的api。
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Python处理图像并生成JSONL元数据文件 Python JSON模块loads、load、dump、dumps函数举例详解 Python中json和jsonify的使用方法及区别详解 使用Python将JSON数据还原为PPT文件的实现步骤 使用Python解析PPT文件并生成JSON结构详解 Python结合JSON实现动态按钮管理程序
  • 目录
    • 用python写一个Github Trending API
      • 要求
      • 1.用到的库
      • 2.抓取url
      • 3.解析内容
      • 4.连接数据库
    • Questions
      • 总结

        由于才开始学习python,很多东西都不会,花了好多天来把这个东西写好,于是记录如下。

        用requests库抓取热门仓库的信息,并存入数据库

        import requests
        from sqlalchemy import desc, create_engine, Column, Integer, String, Text  # 降序、连接路径、列、字符串、文本
        from sqlalchemy.orm import scoped_session, sessionmaker  # 代理模式、数据库连接的媒(手机);engine号码
        from sqlalchemy.ext.declarative import declarative_base  # 声明类映射类到表的关系

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

        response_dict = response.json()

        内容大致是这些:字典里面三个元素,第三个元素msg是一个列表,列表里面是各个热门仓库的信息

        我们要分析的就是msg里面的内容

        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 = {
                # 项目名称
                'repo': repo,
                # 语言
                'language': language,
                # 仓库拥有者
                'user': user,
                # star数
                'stars': stars,
                # fork数
                'forks': forks,
                # 描述
                'about': res['about'],
                # 链接
                'link': res['link'],
                # 新增star
                'new_stars': res['new_stars'],
                # 头像
                'avatars': res['avatars']
        
            }

        # 创建连接:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'
        engine = create_engine('mysql+pymysql://root:19981010@localhost:3306/oceanlay?charset=utf8mb4')
        
        # 连接数据库的路径。
        # “mysql+mysqldb”指定了使用 MySQL-Python 来连接,
        # 声明类 类到表的关系
        Base = declarative_base()
        # 创建数据表
        Base.metadata.create_all(engine)

        #定义python类

        class Api(Base):
            __tablename__ = 'api'
            id = Column(Integer, primary_key=True)    #主键primary_key必须存在于某个字段中 
            repo = Column(String(128))  # repository name    #注意字段的数据类型与数据长度,设置相对应的类型
            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,)
        # 向表中插入数据
        DBSession = sessionmaker(bind=engine)  #sessionmaker好比数据库和内容联系的手机,engine就是联系号码
        session = DBSession()
        # 写入数据
        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'])
                )    #注意添加到哪一个表里面 就写那个表

        遍历输出:format函数

        for res in repositories:
            print("仓库名:{repo}n语言:{language}n用户:{user}nstars:{stars}nforks:{forks}n项目描述about:{about}n网址:{link}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']))

        遍历列表字典时,一直得到的只有第一个仓库的东西,后来将写入数据的代码放入遍历循环中,ok!

        连接数据库时,(还没学过数据库555),对应的端口、用户开始没搞清楚,一直没有连接成功

        先建表再写数据,表内字段也要建好才可以,不然写不进去的,要注意数据类型和数据长度,不然会产生各种报错!

        PS:由于热门项目的url得到的是html内容 虽然用beautifulsoup可以将内容提取出来 但是我太菜了 我提到一半不知道怎么搞了,于是就用了博主直接提供的api。

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

        您可能感兴趣的文章:

        • Python处理图像并生成JSONL元数据文件
        • Python JSON模块loads、load、dump、dumps函数举例详解
        • Python中json和jsonify的使用方法及区别详解
        • 使用Python将JSON数据还原为PPT文件的实现步骤
        • 使用Python解析PPT文件并生成JSON结构详解
        • Python结合JSON实现动态按钮管理程序

        站内搜索