www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

当读取文件,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;;

posted on 2016-03-08 17:58  秦瑞It行程实录  阅读(320)  评论(0编辑  收藏  举报
www.cnblogs.com/ruiyqinrui