当读取文件,dbm模块使用whichdb函数针对哪个库创建了该数据文件做出有根据的猜测
创建持久字典
dbm模块支持使用open函数创建一个新的dbm对象 成功打开便可以在字典中存储数据 读取数据 关闭dbm对象 以及相关联的数据文件
移除项和检查字典中是否存在某个键
如果要打开一个dbm持久字典 使用所选择模块的open函数
使用dbm模块创建持久字典
open函数需要字典的名称来创建新的字典
名称
字典的名称 创建新的字典
名称被转换为可能已经存在于磁盘上的数据文件的名称
dbm模块可能-虽不是总是--创建多个文件 通常一个文件用于数据,另一个文件用于键的索引
字典的名称被视为一个基本 包括路径的文件名称
底层的库将为数据附加后缀.dat
查找websites命名的文件找到此文件 位于当前的工作目录
创建dbm持久字典
import dbm
db = dbm.open('websites','c')
#Add an item
db['www.python.org'] = 'Python home page'
print(db['www.python.org'])
#Close and save to disk.
db.close()
可用标志 available symbols;
C打开数据文件以便对其进行读写,必要时创建文件
N打开文件以便对其进行读写,但总是创建新空文件
如果该文件已经存在
则将被覆盖已有的内容将会丢失
w打开文件以便对其进行读写
但是该文件不存在 不会创建
打开文件以便对其进行读写
总是创建一个新的空文件
总是创建一个新的空文件 如果该文件已经存在 则将被覆盖 已有内容丢失
打开数据文件以便对其进行读写 必要时创建文件
dbm模块的open方法返回一个新的dbm对象,之后便可以使用此对象存储和检索数据
在打开一个持久字典 python字典写入值
db['www.python.org'] = 'Python home page'
键和值都必须是字符串 而不能是其他对象 数值 python对象
希望保存一个对象
使用pickle模块对它进行串行化
close方法关闭文件 将数据保存到磁盘;
创建访问持久字典
使用dbm模块 可以从open函数返回的对象字典对象
实现对值的获取和设置
db['keys'] = 'values'
values = db['key']
keys方法返回包含所有键的一个列表
for key in db.keys():
#do something...
如果在文件中包含大量的键 那么keys方法的执行可能会占用很长时间
对于较大的文件,此方法可能需要大量的内存来存储它为这些文件创建的较大的列表
以读写模式打开持久字典websites
磁盘上当前目录中没有包含必要的数据文件
处理持久字典的API极其简单
数据需求可以通过存储一些键值对满足
支持事务 使用关系数据库 事务指多件事同时发生 保证不会发生数据在一处改变,但未在另外一处改变 使用事务确定并发发生事件
复杂数据结构 多个连接数据的表
一个主键对一个表的唯一索引
department列保存一个部门的ID
另一个表中一行ID
作为另一个表的一个键
外键 foreign key;
结构化查询 structure query langiage;
查询 修改数据库标准语言
select 执行查询在数据库中搜索指定的数据
update 修改一行 若干行 根据特定的条件进行修改;
insert 数据库中创建新行;
delete 数据库中删除行;
增删改查
insert delete update select;
基本操作
select/Query Update Insert Delete 查改增删;
QUID
SQL基本的操作 称为QUID Query update insert,delete
CRUD create read update delete QUID 是在编写应用程序过程中使用最多的操作;
python db api 让数据库对它们进行评估执行语句
使用一种语言python 创建另一种语言SQL
select columns from tables where condition order by columns ascending_or_descending;
update table set new values where condition
insert into table(columns) values(values)
delete from table where condition;
雇员表 插入新行 代码SQL查询
虽然是添加数据而不是获取数据 但是 根据约定 所有的SQL命令或语句都被称为查询
所有的SQL命令语句 被称为查询;
insert into employee(empid,firstname,lastname,manager,dept,phone) values (3,'qin','name',2,2,'33333-3333');
SQL使用单引号 限定字符串
SQL对于其关键字 不区分大小写 表 列的名称 大写
可以执行一个联接实现从多个表查询数据
雇员 提取其所在部门名称
select employee.firstname,employee.lastname,department.name from employee,department where employee.dept = department.departmentid
order by lastname desc;
不要改变查询逻辑及语法;
select e.firstname,e.lastname,d.name from employee as e,department as d where e.dpet = d.departmentid order by lastname desc;
数值周围不需要引号 字符串 放引号 内;
定义表
第一次建立一个数据库
定义表和他们之间的关系
数据定义语言
data definition language 数据定义语言 定义了各个表的结构
DDL基本原理
SQL并不是完全标准的语言
每个数据库对它的某些部分处理
任何数据库
sqlite3
关系数据库 relational database;
sqlite3.OperationalError table employ already exists;
python db API;
conn = sqlite3.connect('sample_database');
检查数据库模块以及数据库和表结构元数据
事务 支持提交和回滚事务
执行语句和存储过程 使用游标查询更新插入删除数据;
下载各个模块
针对需要访问的数据库
下载相应的单独DB API
cursor 对象
获取游标 调用connection对象cursor方法;
建立了数据库连接 创建cursor对象;
import os
import sqlite3
conn = sqlite3.connect('sample_database')
cursor = conn.cursor()
cursor对象的execute方法 执行了SQL语句;
cursor.execute("""
insert into employee(empid,firstname,lastname,manager,dept,phone) values(2,'r','q',2,3,'0551-000223')
""")
根据需要使用三引号字符串实现对行的跨域
conn = sqlite3.connect('db')
cursor = conn.cursor()
conn.commit()
cursor.close()
conn.close();
连接提交事务
conn.commit()
关闭游标和连接释放资源
cursor.close()
conn.close();
编写简单的查询
雇员表 部门表 employee development;
3
大数据 ECS 9Nodes 1T 9 仅仅提供大数据分析的 计算资源;
大数据分析组件整合入云平台镜像--->hbase hive ( -->Centos6.5)
cursor.fetchall();
调用了execute方法 能够找到数据
存储到cursor对象
使用fetchall方法提取数据;
fetchall
fetchone;;