专栏:010:SQL VS No SQL

作者: 谢小路 | 来源:发表于2016-05-04 20:17 被阅读286次

    用理工科思维看待这个世界

    系列爬虫专栏
    崇尚的学习思维是:输入,输出平衡,且平衡点不断攀升。
    曾经有大神告诫说:没事别瞎写文章;所以,很认真的写的是能力范围内的,看客要是看不懂,不是你的问题,问题在我,得持续输入,再输出。
    今天的主题是:pymongo的简单实用及其实战

    0:框架

    序号 内容 说明
    01 概念及对比说明 --
    02 对比 --
    03 实战 --
    04 参考及总结 --

    1:概念

    • 数据库
      数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
      每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

    • mongodb
      MongoDB是一种文档导向数据库管理系统,是一种分布式文件存储的数据库,由C++编写.

    • 特点:
      MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

    • MySQL
      MySQL(官方发音为英语发音:/maɪ ˌɛskjuːˈɛl/“My S-Q-L”[1],但也经常读作英语发音:/maɪ ˈsiːkwəl/“My Sequel”)是一个开放源代码的关系数据库管理系统.

    • 特点:
      数据以表格的形式出现
      每行为各种记录名称
      每列为记录名称所对应的数据域
      许多的行和列组成一张表单
      若干的表单组成database

    • SQL 和 Mongodb术语对比:

    SQL术语 Mongodb术语 解释说明
    database database 数据库
    table collection 数据表,集合
    row document 数据记录行,文档
    column field 数据字段,域
    index index 索引
    primary key primary key 主键,mongodb自动将_id字段设为主键

    可视化工具显示:
    关系型数据库:数据记录的显示

    001.png

    Mongodb数据库:数据记录的显示

    002.png

    2:对比

    • 搭建
      下载:
      Mongodb官网
      MySQL官网

    • 运行本地服务器
      1: MongoDB :路径
      mongod --dbpath C:\Mongodb\Data
      2:MySQL
      mysql -u root -p

    • python 下模块
      1:MongoDB
      pymongo
      2:MySQLdb
      MySQLdb

    • python 下创建连接对象
      1:mongodb

    from pymongo import MongoClient
    client = MongoClient('localhost',27017)  # 创建连接对象
    db = client.exercise   # 创建数据库
    collection = db.tablename   # 创建collection
    
    # collection 使用各种方法实现:增删改查
    
    
    

    2:MySQLdb

    import MySQLdb
    mysql = MySQLdb.connect(
        user="root",
        host="localhost",
        passwd="123456",
        port=3306,
        db='exercise',
        charset='utf8')  # 创建连接对象
    cursor = mysql.cursor() # 创建游标对象
    # 游标对象下执行sql语句实现对数据的增删改查
    
    • pymongo 简易教程
      假设collection名为tablename
    # 插入数据
    data = {"A":1,"B":2}
    tablename.insert_one(data)  # 向数据库插入一条数据
    # 查询数据
    tablename.find_one()  # 获取数据库一条数据
    # 按条件查找
    tablename.find_one({"A":1})  # 按条件返回一条数据
    # 插入多条数据
    new_data = [{"C":3,"D":4},{"E":5}]
    tablename.insert_many(new_data)
    # 查询多条
    
    for one in tablename.find():
        print(one)            # 逐条打印
    
    # 计数
    tablename.count()   # 返回该集合下有多少条数据
    

    参考文档


    3:实战

    专栏:009:
    完整版代码示例
    实现了将数据储存至MySQL数据库
    核心代码不变: 添加存储至mongodb 数据库中:

    def save_to_mongodb(self, each_page_film_data, tablename):
        client = pymongo.MongoClient()
        db = client.exercise
        result = db.tablename.insert(each_page_film_data)
        client.close()
    # each_page_film_data 是JSON格式的数据
        
    

    效果图:可视化工具Robomongo

    003.png

    将全部数据取出查看:

    def select_from_mongodb(self):
        client = pymongo.MongoClient()
        db = client.exercise
        result = db.tablename.find()
        return result
        
    

    效果图:每条数据自动添加_id字段

    004.png

    完整版代码


    4:总结

    浅显的对比MySQL 和 mongodb数据库。
    数据库存在很多shell 指令.
    具体查看官方文档。

    Github

    关于本人:

    国内小硕,半路出家的IT初学者。
    兴趣领域:爬虫 , 数据科学
    本人正在构建一个共同成长爬虫小型社群。持续精进。如果理念相似,欢迎加入。
    文档及代码托管在Github上。

    相关文章

      网友评论

      • 磨人的小妖精九斤:給你个赞啊 顺带做个markdown的简易教程总结下吧 你的排版不错啊
        谢小路: @磨人的小妖精九斤 啊哈哈,markdown教程到处有。有人看的话,我写一个。

      本文标题:专栏:010:SQL VS No SQL

      本文链接:https://www.haomeiwen.com/subject/lnzrrttx.html