python数据库(一)
来源:互联网 发布:简述波士顿矩阵分析法 编辑:程序博客网 时间:2024/06/06 07:40
1.使用dbm作为持久化字典
#!/usr/bin/python#coding:utf-8'''用持久字典来存储名称/值对数据是在磁盘读取和写入的dbm的键和值必须是字符串类型'''#三个实体items(物品信息)、members(成员信息)、loans(租借信息) #创建一个LendyDB DBM数据库(三个DBM文件)import dbm# ID, Name, Description, OwnerID, Price, Condition, DateRegistereditems = [ ['1','Lawnmower','Tool','1','$150','Excellent','2012-01-05'], ['2','Lawnmower','Tool','2','$370','Fair','2012-04-01'], ['3','Bike','Vehicle','3','$200','Good','2013-03-22'], ['4','Drill','Tool','4','$100','Good','2013-10-28'], ['5','Scarifier','Tool','5','$200','Average','2013-09-14'], ['6','Sprinkler','Tool','1','$80','Good','2014-01-06'] ]# ID, Name, Emailmembers = [ ['1', 'Fred', 'fred@lendylib.org'], ['2', 'Mike', 'mike@gmail.com'], ['3', 'Joe', 'joe@joesmail.com'], ['4', 'Rob', 'rjb@somcorp.com'], ['5', 'Anne', 'annie@bigbiz.com'], ]# ID, ItemID(对应items ID), BorrowerID(对应members ID), DateBorrowed, DateReturnedloans = [ ['1','1','3','4/1/2012','4/26/2012'], ['2','2','5','9/5/2012','1/5/2013'], ['3','3','4','7/3/2013','7/22/2013'], ['4','4','1','11/19/2013','11/29/2013'], ['5','5','2','12/5/2013','None'] ]def createDB(data,dbName): try: db = dbm.open(dbName,'c') for datum in data: key = datum[0] db[key] = ','.join(datum) #使用第一个字段(ID)作为主键且所有字段用','分割 # print(key) #打印键 # print(db[datum[0]]) #打印值 finally: db.close() print(dbName,'created')def readDB(dbName): try: db = dbm.open(dbName,'r') print('Reading ',dbName) return [db[key] for key in db.keys()]#通过键,返回一个数据列表 finally: db.close()def main1(): print('Creating data files...') createDB(items,'itemdb') createDB(members,'memberdb') createDB(loans,'loandb') print('Reding data files...') print(readDB('itemdb')) print(readDB('memberdb')) print(readDB('loandb'))def main2(): items = dbm.open('itemdb') members = dbm.open('memberdb') loans = dbm.open('loandb','w') loan2 = loans['2'].decode() #decode()把dbm字节格式转换成str字符串格式 print('loan2:',loan2) loan2 = loan2.split(',') #split()将str字符串分离成单独的域,返回一个列表 print('loan2:',loan2) #通过使用借出记录值作为键,提取对应的成员和物品记录# item2 = items[loan2[1]].decode().split(',') print('items:',item2) member2 = members[loan2[2]].decode().split(',') print('members:',member2) print('{} borrowed a {} on {}'.format( member2[1],item2[1],loan2[3])) if __name__ == '__main__': main1() main2()2.使用shelve作为持久化字典
#/usr/bin/python3#coding:utf-8import shelve# ID, Name, Description, OwnerID, Price, Condition, DateRegistereditems = [['1','Lawnmower','Tool','1','$150','Excellent','2012-01-05'],['2','Lawnmower','Tool','2','$370','Fair','2012-04-01'],['3','Bike','Vehicle','3','$200','Good','2013-03-22'],['4','Drill','Tool','4','$100','Good','2013-10-28'],['5','Scarifier','Tool','5','$200','Average','2013-09-14'],['6','Sprinkler','Tool','1','$80','Good','2014-01-06'] ]# ID, Name, Emailmembers = [['1', 'Fred', 'fred@lendylib.org'],['2', 'Mike', 'mike@gmail.com'],['3', 'Joe', 'joe@joesmail.com'],['4', 'Rob', 'rjb@somcorp.com'],['5', 'Anne', 'annie@bigbiz.com'],]# ID, ItemID, BorrowerID, DateBorrowed, DateReturnedloans = [['1','1','3','4/1/2012','4/26/2012'],['2','2','5','9/5/2012','1/5/2013'],['3','3','4','7/3/2013','7/22/2013'],['4','4','1','11/19/2013','11/29/2013'],['5','5','2','12/5/2013','None']]def createDB(data, shelfname): try: shelf = shelve.open(shelfname,'c') for datum in data: key = datum[0] shelf[key] = datum finally: shelf.close()def readDB(shelfname): try: shelf = shelve.open(shelfname,'r') return [shelf[key] for key in shelf.keys()] finally: shelf.close()def main1(): print('Creating data files...') createDB(items, 'itemshelf') createDB(members, 'membershelf') createDB(loans, 'loanshelf') print('reading items...') print(readDB('itemshelf')) print('reading members...') print(readDB('membershelf')) print('reading loans...') print(readDB('loanshelf'))def main2(): items = shelve.open('itemshelf','w') members = shelve.open('membershelf','w') loans = shelve.open('loanshelf','w') #与dbn区别:不再需要使用decode()把字节转换成普通字符串,不需要进行split()操作获得一个列表 loan2 = loans['2'] print('loan2:',loan2) item2 = items[loan2[1]] print('item2:',item2) member2 = members[loan2[2]] print('member2:',member2) print('{} borrowed a {} on {}'.format( member2[1],item2[1],loan2[3]))if __name__ == "__main__": main1() main2()
阅读全文
0 0
- python数据库(一)
- python备份mysql数据库脚本一枚
- python 访问数据库一:添加部门
- Python开发(一)操作Mysql数据库
- 我的Python爬虫(一)plus:Python数据库--mysql
- 采用python中SQLalchemy模块访问数据库(一)
- Python高级编程之数据库sqlite3(一)
- Pycharm+Django+Python+MySQL开发(一)后台管理数据库
- Python实现数据库一键导出为Excel表格
- Python实现数据库一键导出为Excel表格
- 采用python中SQLalchemy模块访问数据库(一)
- Mysql 数据库操作 - C/C++转Python边用边学(一)
- python ORM 模块peewee(一): 建立数据库对象
- python ORM链接数据库-sqlalchemy库的使用(一)
- python——django使用mysql数据库(一)
- 几行代码搞定python破解mysql数据库【一】
- python中把一数据库表 数据存入另一个数据库中
- python 数据库
- swift 接入带css的webView
- A律13折线码编码输出、量化误差、以及对应的11位均匀量化编码
- 在Linux上如何验证已下载文件的真实性和完整性
- Container killed by YARN for exceeding memory limits.
- idea创建简单的web工程
- python数据库(一)
- Spring常用注释解析
- 基于腾讯Centos7云服务器搭建SVN版本控制库
- [leetcode: Python]412.Fizz Buzz
- Git-----Git中版本回退
- 自定义permission简单总结
- docker连接spring boot和mysql容器
- spring/spring boot/spring mvc中用到的注解
- T9-智能拼音