mangoDB
一、认识MangoDB
1、简介:
基于分布式文件存储的开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案,将数据存储为一个文档,文档类似与Json格式,
{
name:"小明",
age:16,
address: {city:"长沙", country:"china"}
}
2、关系数据库与mongo数据库的联系:
关系数据库:
1、数据库
2、表
3、行
mongodb数据库:
1、数据库
2、collection(集合)
3、document(文档)
3、进入与退出
进入:mongo
退出:exit
----------------------------------------------------------------------------------
二、库,集合操作
1、显示所有库:show dbs
2、切换/创建数据库:use 数据库名称 注:如果数据库不存在,则创建并创建之后切换到创建的这个数据库。
3、查看所在库:db
4、删除库:db.dropDatabase()
5、显示当前的数据库集合:show collections
6、创建集合:db.createColletion(name) 注:name应该是字符串,加''
7、删除集合:db.集合名称.drop()
----------------------------------------------------------------------------------
三、文档的操作
1、插入
db.集合名称.insert(document) 注:插入单条数据
例:
db.student.insert({name:'xiaoming', age:18})
注:添加文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
例:
db.student.insert({'_id':1,name:'xiaoing',age:'18'})
db.集合名称.insert([document]) 注:插入多条数据,需使用[]
例:
db.student.insert([
{name:xiaoming', sex:'男', age:16},
{name:’xiaobai', sex:'男', age:18},
{name:’moran‘, sex:’女', age:18},
])
2、查看
db.聚合名称.find([condition])
1、查看集合中全部数据:db.student.find()
2、格式化显示:db.student.find().pretty()
3、db.shutudent.find({name:'xiaoming'})
噩梦条件:
and条件 {$and:[{expression1},{expresssion},.....]
or条件 {$or:[{expression1}, {expression1}, ...] }
and和or混用
db.table.find({$or:[{$and:[{sex:'女'}, {age:18}]},{$and:[{sex:'男'}, {age:{$gt:18}}]}]})
操作符 |
描述 |
$ne |
不等于 |
$gt |
大于 |
$it |
小于 |
$git |
大于等于 |
$ite |
小于等于 |
3、修改
db.集合名称.update(<query>, <update>, {multi:<boolean>})
1、修改一条数据: db.table.update({sex:'男'}, {age:20})
2、指定属性修改: { $set: {age:20} }
例: db.table.update({name:'xiaoming'}, {$set: {age:666, sex: 'xx'}} )
3、更新集合中所有满足条件的文档: { multi: true }
例:db.table.update({sex:'男'}, {$set:{sex:'女'}}, { multi:true} )
4、删除
db.集合名称.remove(<query>, {justOne:<boolean>})
1、删除集合中所有的文档:
例:db.table.remove({})
2、删除集合中满足条件的所有文档
例:db.table.remove({sex: '男'})
3、只删除集合中满足条件的第一条文档: { justOne: true }
例:db.table.remove({sex:'男'}, { justOne:true} )
----------------------------------------------------------------------------------
四、python操作MangoDB
pip install pymongo
1、建立连接:client = pymongo.MongoClient()
2、指定数据库:db = client[数据库名]
3、指定集合:collection=db[集合名]
注:在python3中官方已经不推荐使用这些方法,当然继续使用也是没有问题的
1、查找文档:find()
2、添加文档:insert()
3、修改文档:update()
4、删除文档:remove()
注:官方推荐我们使用如下的方法
1、查找一条文档:find_one()
注:find()得到的是一个对象,但可以用for遍历出来
2、添加一条文档:insert_one()
添加多条:insert_mnay()
3、删除一条文档:delete_one
删除多条:delete_many()
4、修改一条文档: update_one
修改多条:update_many()
Redis
一、Redis简介
Redis是由意大利人开发的一款内存高速缓存数据库,是一个高性能的键值对存储数据库。
Redis全称是Remote Dictionary Server(远程数据服务),使用C语言编写,并以内存作为数据存储介质,所以读写数据的效率极高。
Redis特性
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还把value分为list,set,zset,hash等数据结构存储。
因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,提高效率。
二、Redis数据模型
redis是key-value的数据结构,没条数据都是键值对,键的类型是字符串
注:键不能重复
值得类型分为五种
String --------------->字符串
Hash -------------------->哈希
List--------------------->列表
Set---------------------->集合
Zset-----------------------有序集合
基本使用
- 连接redis:redis-cli
- 退出:exit
- 操作服务端:sudo service redis start/stop/restart
- 切换数据库:select n
注:数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
三、Redis五大数据类型使用
---------------------- --------String-----------------------------------
注:string是redis最基本的类型,一个key对应一个value
1、设置数据:set key value
2、查看数据:get key
3、追加数据:append key value
4、删除数据:del key;
-------------------------------------------------------------------------------
对redis的五个数据类型都适用的命令
1、查看所有的key:keys *
2、删除键值对:del key
注:exists key 查看key是否存在
3、改名:rename key new_key
4、设置过期时间:expire key seconds
ttl 查看时间 persist key 删除过期时间
-----------------------------------List----------------------------------------
注:List类型是一个字符串列表,可以在列表头部或尾部添加、删除数据,在插入数据时,如果该键并不存在,redis将为该键创建一个
1、添加数据:rpush key value [value…]
lpush key value [value…] ----à 头部添加数据
2、查看数据:lrange key start stop
lindex key index ----à 查看某个数据
3、修改数据:lset key index value
4、删除数据:rpop key
lpop key ----à 头部删除数据
--------------------------------------------Hash-----------------------------
是一个键值对集合
1、添加数据:hset key field value
2、查看域值:hget key field
hgetall key ----à 查看所有的field和value
3、查看所有的value:hvals key
4、查看所有的field:hkeys key
------------------------------------Set----------------------------------------
1、添加数据:sadd key member [member …]
2、查看数据:smembers key
3、随机删除:spop key
4、随机删除:spop key
-----------------------Sorted Set-------------------------------------------
1、添加数据: zadd key score member [score2 member2 …]
2、查看数据: zrange key start stop
zrangebyscore key min max --à通过scores值查看
3、删除数据:zrem key member [member …]
4、通过索引删除多个数据:zremrangebyrank key min max
zremrangebyscore key min max --à通过scores值删除
Mysql
DB-API
在没有DB-API之前,各数据库之间的接口非常混乱,实现各不相同,如果项目需要更换数据库,基本上把所有和数据库相关的代码都进行改动,十分不方便
DB-API的出现就是为了解决这个问题,python所有的数据库接口在一定程度上都要遵守python DB-API规范,它定义了一系列的操作数据库的方式,为数据库提供了一致的访问接口,项目中更换使用数据库变得更加方便。
Mysql
一、事务操作:
原子性
一致性
隔离性
持久性
strat transaction; 注:开启事务
commit; 注:事务提交
rollback;回滚
----------------------------------------------------------------------------------
二、连接mysql
db_config = {
‘host’:’ip’,
‘port’:port,
'user': '账号',
'password': '密码',
'db': '数据库名',
'charset': 'utf8',
}
conn = pymysql.connect(**db_config)
开始----->创建connection------->获取cursor------->执行查询,执行命令,获取数据,处理数据---->关闭cursor------>关闭connection----->结束
-----------------------------------------------------------------------------------
三、使用步骤:
1、导入模块:import pymysql
2、建立连接:pymysql.connect(**dbconfig) 注:连接是不能操作数据库的,需要用连接生成游标来操作
3、创建游标: connection.cursor()
4、执行SQL语句:cursor.execute(sql) 注:SQL语句都是通过这个方法执行,但返回结果是数字,要内容用步骤五
5、获取所有结果:cur.fetchall()
获取一条数据:cur.fetchone()
注:执行第五步时,需要先运行步骤四
事务提交:
cur.execute('commit')
connection.commit
关闭游标:
cur.close()
关闭连接:
connection.close()
----------------------------------------------------------------------------------
四、注意要点:
1、在pymysql中执行的SQL语句不需要加 ;
2、execute执行完后不是直接得到结果,需要你主动去获取
3、和文件一样,别忘了关闭游标与连接
4、事务的回滚和提交
-----------------------------------------------------------------------------------
五、Reids
注:在python中操作redis的命令和命令行的用户几乎一模一样
1、安装python包redis: pip install redis
2、连接redis:redis.Redis() 注:为了兼容旧版本(不推荐使用)
3、连接redis:Redis.StrictRedis()
4、在程序操作的数据为bytes类型,加入decode_responses=True,写入的数据为str类型
标签:基础,数据库,db,mysq,文档,value,key,数据 From: https://www.cnblogs.com/chsh/p/17670411.html