`
smartzxy
  • 浏览: 196284 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

简单比较Python的数据持久化操作(一)

阅读更多

      最近喜欢上了Python,喜欢它的简洁高效,喜欢它的“无所不能”。

 

      在动手我计划的项目之前,打算先储备些基础知识。之前已经对基本的语法熟悉了,现在该对数据操作做一些深入了。Python的数据持久化操作主要是六类:普通文件、DBM文件、Pickled对象存储、shelve对象存储、对象数据库存储、关系数据库存储。

 

      普通文件不解释了,DBM就是把字符串的键值对存储在文件里:

 

% python
>>> import anydbm                           
>>> file = anydbm.open('movie', 'c')        # make a DBM file called 'movie'
>>> file['Batman'] = 'Pow!'                 # store a string under key 'Batman'
>>> file.keys( )                                 # get the file's key directory
['Batman']
>>> file['Batman']                          # fetch value for key 'Batman'
'Pow!'

 Pickled就是把对象序列化到文件,可以存储复杂类型:

 

% python
>>> table = {'a': [1, 2, 3],
             'b': ['spam', 'eggs'],
             'c': {'name':'bob'}}
>>>
>>> import pickle
>>> mydb  = open('dbase', 'w')
>>> pickle.dump(table, mydb)

 下面是反序列化:

 

% python
>>> import pickle
>>> mydb  = open('dbase', 'r')
>>> table = pickle.load(mydb)
>>> table
{'b': ['spam', 'eggs'], 'a': [1, 2, 3], 'c': {'name': 'bob'}}

 shelve存储差不多就是DBM和Pickled方式的结合,以键值对的形式把对象序列化到文件:

 

% python
>>> import shelve
>>> dbase = shelve.open("mydbase")
>>> object1 = ['The', 'bright', ('side', 'of'), ['life']]
>>> object2 = {'name': 'Brian', 'age': 33, 'motto': object1}
>>> dbase['brian']  = object2
>>> dbase['knight'] = {'name': 'Knight', 'motto': 'Ni!'}
>>> dbase.close( )

 取数据:

 

% python
>>> import shelve
>>> dbase = shelve.open("mydbase")
>>> len(dbase)                             # entries
2

>>> dbase.keys( )                          # index
['knight', 'brian']

>>> dbase['knight']                        # fetch
{'motto': 'Ni!', 'name': 'Knight'}

     对象数据库的存储没怎么了解,因为不习惯用它存储数据。感觉应该和shelve差不多吧,只是把数据保存到了数据库里(其实还是一个文件嘛),然后增加了些事务之类的高级功能。


     Python中关系数据库的存储是重点,操作关系数据库最“简单”的就是直接用DB-API,就像Java里的JDBC;当然,数据结构复杂了、设计要求高了,就得找些ORM框架偷懒了,主要有独立的SQLAlchemy,Django的自带ORM等。这部分内容还是下一篇博客写吧,我不喜欢文章拉得长长的……

0
1
分享到:
评论

相关推荐

    Python拾趣013 数据持久化之HDF5数据操作

    HDF(Hierarchical Data Format)是一种设计用于存储和...Python也可以方便运用这个库,因为OpenCV的数据都是NumPy形式,操作也比较简单。 """ 有趣的事情 没有结束 2020/4/27 8:38 """ import numpy as np import cv2

    数据获取(Python爬虫)数据持久化(MySQL)Flask搭建Web后台数据可视化(H5+Echarts).zip

    它的界面简洁明了,操作简单易懂,即使是不熟悉电脑操作的人也可以轻松上手。同时,它还支持自定义快捷键和界面主题,可以让我们根据自己的习惯和喜好进行个性化设置。 此外,这款程序还具有出色的稳定性和安全性。...

    毕设&课设&项目&实训-提供了从爬虫获取数据到数据持久化、数据可视化分析以及构建简单的代理池等一整套解决方案模板。.zip

    基于webmagic + springboot + mybatis的Java爬虫,使用Echarts进行数据可视化分析,提供了从爬虫获取数据到数据持久化、数据可视化分析以及构建简单的代理池等一整套解决方案模板。 【项目资源】: 包含前端、后端、...

    python web开发学习实录

    内容包括 Python 的安装和环境配置、Python的基本语法、流程控制、模块和函数、数据结构、字符串与正则表达式、面向对象编程、文件处理、程序异常和处理、数据库连接和持久化操作、Python网络功能、Python与HTML、...

    2019千峰Python超详细入门教程(百度云盘分享).docx

    │ │ 5、Python数据类型.py │ │ 6、标识符.py │ │ 7、变量与常量.py │ │ │ ├─file │ │ │ MindManager_64bit_17.2.208.exe │ │ │ Python安装.pdf │ │ │ Python概述.pdf │ │ │ submit 2.0.rar ...

    Python编程入门经典

    12.4.2 一个更加强大的Python 搜索 207 12.5 软件生命周期中的正规 测试 210 12.6 本章小结 210 第13章 使用Python编写GUI 213 13.1 Python的GUI编程工具箱 213 13.2 Tkinter简介 215 13.3 用Tkinter创建GUI 小组件 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    Python核心编程第二版(ok)

     6.4.1 格式化操作符(%)   6.4.2 字符串模板c更简单的替代品   6.4.3 原始字符串操作符(rR)   6.4.4 Unicode字符串操作符(uU)   6.5 内建函数   6.5.1 标准类型函数   6.5.2 序列类型...

    Python核心编程第二版

     6.4.1 格式化操作符(%)   6.4.2 字符串模板: 更简单的替代品   6.4.3 原始字符串操作符(r/R)   6.4.4 Unicode字符串操作符(u/U)   6.5 内建函数   6.5.1 标准类型函数   6.5.2 序列类型...

    像计算机科学家一样思考Python(第2版).pdf

    14.1 持久化 144 14.2 读和写 144 14.3 格式操作符 145 14.4 文件名和路径 146 14.5 捕获异常 147 14.6 数据库 148 14.7 封存 149 14.8 管道 150 14.9 编写模块 151 14.10 调试 152 14.11 术语...

    Python Cookbook

    第7章 持久化和数据库 273 引言 273 7.1 使用marshal模块序列化数据 275 7.2 使用pickle和cPickle模块序列化数据 277 7.3 在Pickling的时候压缩 280 7.4 对类和实例使用cPickle模块 281 7.5 Pickling被绑定...

    Python酒店管理系统 课程设计

    这段Python代码实现了一个简单的酒店管理系统,允许用户执行多种操作,包括添加、删除、修改、查询房间信息以及数据统计分析。该系统使用JSON文件进行数据持久化存储,并提供一个文本界面供用户选择不同的操作。

    Redis特性和应用场景

    Redis对不同数据类型的操作是自动的,因此设置或增加key值,从一个集合中增加或删除一个元素都能安全的操作。 支持多种语言 Redis支持多种语言,诸如Ruby,Python, Twisted Python, PHP, Erlang, Tcl, Perl, Lua, ...

    Python餐厅管理系统 课程设计

    3. 数据持久化: - 通过将食材信息保存到JSON文件中,系统确保数据的持久性和一致性。这对于记录长期数据或在不同会话间维持数据状态非常重要。 4.用户交互: - 系统通过一个简单的命令行界面与用户交互,用户可以...

    大数据爬虫技术第9章 存储爬虫数据.ppt

    01 数据存储简介 02 MongoDB数据库简介 03 使用PyMongo库存储到数据库 MongoDB是一款基于分布式文件存储的NoSQL数据库,具有免费、操作简单、面向文档存储等强大特点,旨在为Web应用提供可扩展的高性能数据存储解决...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    python数据类型 bytes数据类型 列表的使用 元组与购物车程序练习 购物车程序练习实例 字符串常用操作 字典的使用 三级菜单实例 本周作业-购物车优化 第3周 作业 上节内容回顾 集合及其运算 文件读与写详解 心灵...

    redis2加强.doc

    5〉持久化:发生断电或机器故障,数据可能会丢失,持久化到硬盘 6〉主从复制:实现多个相同数据的 redis 副本 8〉高可用和分布式:哨兵机制实现高可用,保证 redis 节点故障发现和自动转移 9〉客户端语言多:java ...

    micmat:MICMat 是 Intel Xeon Phi 的 Python 接口

    控制主机和MIC之间的数据传输非常简单,并且完全支持数据持久化。 自动内存管理:MICMat 提供自动垃圾收集:它与 Python 垃圾收集例程兼容。 然而,它还提供了显式的内存管理和重用,从而避免了昂贵的内存分配和...

    SQLAlchemy - Python的SQL工具包和对象关系映射器-python

    这些模式允许使用声明性配置系统透明地持久化对象。 可以自然地构建和操作领域模型,并且更改自动与当前事务同步。 一个面向关系的查询系统,根据对象模型,显式地公开 SQL 的全部功能,包括连接、子查询、关联和...

    自美智能系统是基于树莓派、Python、HTML5、PHP、微信小程序打造出的一款物联网人工智能系统.zip

    PHP提供mysqli、PDO等数据库扩展,能够无缝连接MySQL,进行SQL查询、数据插入、更新、删除等操作,实现动态网站的数据持久化。此外,PHP还支持与其他数据库系统的连接,如PostgreSQL、SQLite、Oracle等,具有良好的...

Global site tag (gtag.js) - Google Analytics