zoukankan      html  css  js  c++  java
  • python储存数据的方式

    python储存数据的方式
    2017年10月13日 23:38:10 Nick_Spider 阅读数:59286 标签: redis 数据库 爬虫 存储 结构 更多
    个人分类: 数据库 爬虫 python

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39198406/article/details/78231430
    在python编程开发中,总是不可避免的遇到数据储存的问题,下面就介绍python与几种数据储存方式交互的方法。

    json文件
    json是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。层次结构简洁而清晰,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
    最主要的是,通过json这个包可以很方便的解决无论是py2还是py3中的编码问题,json的内容结构也近似于python中的字典和列表,操作起来特别方便。

    import json

    # 此时有一个json文件,结构大概是 [{},{},{}...] 打开这个文件

    # 使用json load读取文件内容,然后可以直接用列表或者字典的方式去操作con这个变量

    con = json.loads(content)

    # 那么如何储存为json文件呢?

    # 使用dumps将列表序列化并且转换为unicode编码,储存的时候,就可以存你最喜欢的utf-8了

    lis = [{},{},{}...]

    data = json.dumps(lis, ensure_ascii=False)

    f.write(data.encode('utf-8'))

    csv文件
    转换为csv文件后,我们就可以直接用excel打开拉图表了

    import csv

    # 打开文件

    with open(filename, 'w') as f:

    writer = csv.writer(f) # 构造写入器

    data = ('1','2','3') # 填写三格

    data = ('','','3') # 填写一格,前两格空起来

    data = ('1','') # 填写第一格,后面无论多少格都空起来

    writer.writerow(data) # writerow每执行一次,写入一行 注意其中的参数data需要是一个元组
    # 注意,在windows中,打开文件需要使用
    with open(filename, 'w', newline='') as f:
    # 否则每写一行都会多一个空行
    # 原因是 windows中换行符号是 ,csv库中并没有做特别的处理,所以会产生空行

    MySQL数据库
    应该是最常用的操作了,使用mysql的优点是看数据真的很直观(如果使用GUI程序的话)

    导入包略微不一样

    @python3

    import pymysql

    @python2

    import MySQLdb

    # 建立连接 注意数据库写入数据时数据的编码

    conn = MySQLdb.connect(host='localhost', port=3306, db='test',

    user='root', passwd='', charset='utf8')

    # 新建游标 游标操作sql语句

    cur = conn.cursor()

    result = cur.execute("insert into students(name) values('Jack')")

    result = cur.execute("insert into students(name,age) values(%s,%s)", params)

    # sql对数据库数据有改变的时候,使用commit()提交,否则不生效

    conn.commit()

    # 返回数据到python,使用fetchone和fetchall从内存中取数据,取了一个清空一个

    cur.execute('select * from students where id between 1 and 5')

    result=cur.fetchone()

    result=cur.fetchall()

    # 最后记得关闭连接

    cur.close()

    conn.close()

    Redis数据库
    优点是方便,速度快,需要注意的是取出的数据是二进制数据,一般需要转为字符串再操作。
    操作大全: python-redis操作大全

    import redis

    # 建立连接

    client = redis.Redis(host='lcoalhost', port=6379)

    # 操作数据

    client.set('nums', [1,2,3,4,5])

    result = client.get('name')

    # 使用事务(避免失败操作导致数据只操作了一半)

    pipe = client.pipeline()

    pipe.set('name', 'Jack')

    pipe.execute()

    Mongdb数据库
    优点是不在乎数据结构,需要注意的是取出来的时候要写个脚本整理一下。

    import pymongo

    # 建立连接 指定数据表

    client = pymongo.MongoClient('localhost', 27017)

    test1_db = client.test1

    sheet_stu = db.stu

    # 操作数据

    info = {name:'Jack',age:18}

    info_id = stu.insert_one(info).inserted_id

    cur_list = [cur for cur in stu.find()]

    count = stu.count()

  • 相关阅读:
    对象关系【继承】【依赖】【关联】【聚合】【组合】
    对象关系【继承】【依赖】【关联】【聚合】【组合】
    Spring使用p名称空间配置属性
    Spring使用p名称空间配置属性
    spring实例化bean的方式
    MS04011远程缓冲区溢出代码
    注入下载文件的代码到IE进程然后执行下载的文件
    缓冲区溢出漏洞发掘之整数范围限制浅析
    基于ICMP的木马的编写
    凯撒密文的破解编程实现
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/9820778.html
Copyright © 2011-2022 走看看