(十四) 學(xué)習(xí)筆記: 使用Python對(duì)Mysql MongoDB Redis的操作總結(jié)

一. Python對(duì)MySQL的操作

(1) 安裝模塊
pip install pymysql
(2) 操作mysql的八步

(1) 連接MySQL數(shù)據(jù)庫(kù)
db = pymysql.connect("主機(jī)名", "用戶名", "密碼", "數(shù)據(jù)庫(kù)名")
(2) 設(shè)置字符集
db.set_charset("utf8")  # 注意為utf8
(3) 創(chuàng)建游標(biāo)對(duì)象
cursor = db.cursor()
(4) 編寫sql語(yǔ)句
sql = "select * from  表名 ~~~~"
(5) 執(zhí)行sql語(yǔ)句
cursor.execute(sql)  # 注意:執(zhí)行插入刪除操作要提交事務(wù),調(diào)用db.commit()
(6) 處理結(jié)果集
cursor.fetchall()   # 獲取所有數(shù)據(jù)僻肖,返回元組
cursor.fetchone()  # 獲取一條數(shù)據(jù)
cursor.fetchmany(size)   # 獲取size條
(7) 當(dāng)前sql語(yǔ)句執(zhí)行受影響條目
curosr.rowcount
(8) 關(guān)閉數(shù)據(jù)庫(kù)的連接
db.close()

二. Python對(duì)MongoDB的操作

(1) 安裝模塊
pip install pymongo
(2) 操作MongoDB的五步

(1) 導(dǎo)入pymongo
from pymongo import MongoClient

(2) 連接服務(wù)器 端口號(hào)27017
con = MongoClient("localhost")
con = MongoClient("localhost", port=27017)  # 指定端口號(hào)

(3) 選擇數(shù)據(jù)庫(kù)
db = con.數(shù)據(jù)庫(kù)名稱  # 如果數(shù)據(jù)庫(kù)中不存在則會(huì)創(chuàng)建
db = con['數(shù)據(jù)庫(kù)名稱']  # ok 同上
# 獲取集合
collenction = db.集合名
# 例如:  db = con.FirstDB     選擇數(shù)據(jù)庫(kù)中的集合   col = db.User

(4) 對(duì)數(shù)據(jù)的CRUD
==============================================
4.1) 插入數(shù)據(jù)
==============================================
db.集合名.insert({文檔})  # 插入一條文檔 返回id
db.集合名.insert([{文檔1}, {文檔2}, ..])  # 插入多條文檔忙厌,傳入的類型必須是列表裤园,以列表的形式返回多個(gè)id
# 3.x以后推薦的方法
db.集合名.insert_one({文檔}) 
db.集合名.insert_many([{文檔1}, {文檔2}...])
例子:
user1 = {"name":'zs', "age": 18, 'gender': 'w', phone: '123456..'}
user2 = {"name":'ls', "age": 28, 'gender': 'm', phone: '123456..'}
db.集合名.insert(user1)
db.集合名.insert([user1, user2])
db.集合名.insert_one(user2)
db.集合名.insert_many([user1, user2])

==============================================
4.2) 查詢數(shù)據(jù)
==============================================
cursor = db.集合名.find()  # 查詢所有, 返回cursor 對(duì)象 可以使用next()方法進(jìn)行取值
db.集合名.find({條件})
db.集合名.find_one()  # 查詢一條記錄
db.集合名.find_one({條件})  # 添加過(guò)濾好港,直接返回結(jié)果
# 帶id的查詢
from bson.objectid import ObjectId
res = db.集合名.find({"_id": ObjectId("5a601623.....")})
# 模糊查詢
import re
res = db.集合名.find({"name": '/張/'})  # error   如果這樣寫,查詢的是  /張/ 字符串
res = db.集合名.find({"name": re.compile("張")})
print(res)  # ok 查詢包含張的記錄
# sort limit skip count查詢
# sort排序
res = db.集合名.find().sort('age', 1)  # 按照年齡升序排序
res = db.集合名.find().sort('age', -1)  # 按照年齡降序排序
# limit取值
res = db.集合名.find().sort('age', -1).limit(2)
# skip
db.集合名.find().skip()
# count統(tǒng)計(jì)
db.集合名.find().count()

==============================================
 4.3) 修改數(shù)據(jù)
==============================================
db.集合名.update(條件, {"$set":{}})  # 重新賦值
db.集合名.update(條件, {"$inc":{}})  # 在原來(lái)值基礎(chǔ)上增加
例如: res = db.user.update({'age':18},{'$set':{'age':100}})
返回修改的結(jié)果 {'n': 1, 'nModified': 1, 'ok': 1.0,'updatedExisting': True}
# update_one() 修改一條
db.集合名.update_one({'name':'zs'}, {'$set':{'age':10}})  # 返回對(duì)象obj
# update_many() 修改多條
db.collection.update_many({'name':'張三'},{'$set':{'sex':'男'}})
獲取匹配的條數(shù)和修改的條數(shù)(只有3.x以后推薦的形式返回結(jié)果才為對(duì)象)
obj.matched_count   # 匹配條數(shù)
obj.modified_count   # 修改條數(shù)

==============================================
4.4) remove刪除數(shù)據(jù)
==============================================
# 按條件刪除
db.集合名.remove({條件})
# 刪除全部
db.集合名.remove()
# 刪除匹配的第一條數(shù)據(jù)
db.集合名.delete_one()
#  delete_many() 刪除匹配到的數(shù)據(jù)(刪除多條)
db.集合名.delete_many({條件})
# 獲取3.x以后新版本刪除數(shù)據(jù)的條數(shù)
obj.deleted_count

(5) 關(guān)閉數(shù)據(jù)庫(kù)
con.close()

三. Python對(duì)Redis的操作

(1) 安裝模塊

pip install redis

(2) 連接方式

連接redis提供了兩個(gè)類, 其中StrictRedis實(shí)現(xiàn)了大部分官方的方法, 并使用官方的語(yǔ)法和命令;
Redis是StrictRedis的子類, 用于兼容舊版本的redis聋溜。
連接實(shí)例:

res = redis.StrictRedis(host="127.0.0.1", port=6379, password='123', db=0, decode_response=True)  # 默認(rèn)選擇0號(hào)數(shù)據(jù)庫(kù), 加上decode_response, 寫入數(shù)據(jù)庫(kù)為字符串類型, 不加寫入數(shù)據(jù)庫(kù)為字節(jié)類型
res = redis.Redis(host="127.0.0.1", port=6379, password='123', db=0, decode_response=True)

(3) 使用連接池連接

管理redis server的所有連接, 避免每次建立連接, 釋放連接的開(kāi)銷, 用于實(shí)現(xiàn)多個(gè)redis實(shí)例共享一個(gè)連接池丸凭。
連接實(shí)例:

pool = redis.ConnectionPool(host="127.0.0.1", port=6379, password='123', db=0, decode_response=True)
re = redis.StrictRedis(connection_pool=pool)
re = redis.Redis(pool)

(4) 數(shù)據(jù)庫(kù)相關(guān)操作

1. re.keys(pattern="*")  # 根據(jù)通配符獲取對(duì)應(yīng)的keys
例如:
print(re.keys())  # 默認(rèn)獲取所有name
print(re.keys('h?llo'))  # ? 只存在一個(gè)任意字符(不同正則), * 匹配任意個(gè)字符(可有可無(wú))

2. re.delete(*names)  # 根據(jù)name刪除redis的任意key
例如:
re.delete('name')  # string類型的name
re.delete('myHash')  # hash類型
re.delete('myList', 'mySet')  # 同時(shí)刪除多個(gè)key

3. re.exists(name)  # 根據(jù)key是否存在
例如:
re.exists('mySet')  # True

4. re.expire(name, time)  # 為某個(gè)key設(shè)置超時(shí)時(shí)間
例如:
re.expire('myzset', 10)  # 單位10秒

5. re.rename(src, dst)  # 對(duì)某個(gè)key重命名
例如:
re.rename('myHash', 'newMyHash')

6. re.move(name, db)  # 將某個(gè)key移動(dòng)到指定的db(0-15)下
例如:
re.move('myHash', 1)

7. re.randomkey()  # 隨機(jī)返回一個(gè)key
例如:
print(re.randomkey())

8. re.type(name)  # 獲取key對(duì)應(yīng)值的類型
例如:
print(re.type('myhash'))

9. re.flushdb()  # 清空數(shù)據(jù)庫(kù)
例如:
re.flushdb()

10. re.flushall()  # 清空所有數(shù)據(jù)庫(kù)
例如:
re.flushall()

(5) String字符串相關(guān)操作

1. re.set(name,value,ex=None,px=None,nx=False,xx=False)  # 設(shè)置鍵值
參數(shù):
ex:過(guò)期時(shí)間(秒)
px:過(guò)期時(shí)間(毫秒)
nx:如果設(shè)置為True,則只有name不存在時(shí)苹威,set操作才執(zhí)行,類似setnx(name, value)
xx:如果設(shè)置為True, 只有name存在時(shí), 當(dāng)前set操作才執(zhí)行
例如:
re.set('name', 'zhangsan') 

2. re.get(key, value)  # 獲取值
例如:
re.get('name') 

3. re.mset(*args, **kwargs)  # 批量設(shè)置值
例如:
re.mset({'name', 'zhangsan', 'age': 18})  # 以字典的形式傳入
re.mset(name='zhangsan', name2='lisi')  # 以關(guān)鍵字參數(shù)的形式傳入

4. re.mget(key1, key2,...)   # 批量獲取值
例如:
print(re.mget('name', 'age'))

5. re.getset(key, value)  # 設(shè)置新值返回原值
例如:
print(re.getset('name', 'wangwu'))  # 輸出zhangsan
print(re.get('name'))  # 重新打印name的值  wangwu

6. r.getrange(key, start, end)  # 獲取子字符串(子序列)
例如:
re.set('name', 'zhangsan')
print(re.getrange('name', 0, 3))  # 輸出zhan

7. re.setrange(key, offset, value)  # 對(duì)字符串進(jìn)行覆蓋办悟,根據(jù)指定的偏移量開(kāi)始向后替換, 索引從0開(kāi)始
例如:
re.set('name', 'zhangsan')
re.setrange('name', 5, 'lisi')
print(re.getrange('name'))  # zhanglisi

8. re.strlen(key)  # 獲取值的長(zhǎng)度
例如:
re.set('name', 'zhangsan')
print(re.strlen('name'))  # 8

9. re.incr(key, amount=1)  # 值的累加尘奏,amount為累加的值,默認(rèn)為1
例如:
print(re.incr('age', amount=2))  # 如果age不存在病蛉,則執(zhí)行完后age創(chuàng)建并賦值為2
print(re.incr('age'))  # 3 自增加1
print(re.incr('age', amount=6))  # 9 炫加,結(jié)果增加6

10. re.append(key, value)  # 在值后面追加值瑰煎,返回追加后值的長(zhǎng)度
例如:
re.set('name', 'AAA')
re.append('name', 'BBB')
print(re.get('name'))  # AAABBB

(6) Hash操作

1. re.hset(name, key, value)  # 在name對(duì)應(yīng)的hash中設(shè)置一個(gè)鍵值對(duì)(不存在則創(chuàng)建,存在則修改)
例如:
re.hset('myHash', 'name', 'zhangsan')

2. re.hget(name, key)  # 在name對(duì)應(yīng)的hash中根據(jù)key獲取value
例如:
print(re.hget('myHash', 'name'))  # zhangsan

3. re.hgetall(name)  # 獲取name對(duì)應(yīng)的hash的所有鍵和值返回字典
例如:
print(re.getall('myHash'))  

4. re.hmset(name, mapping)  # 在name對(duì)應(yīng)的hash中批量設(shè)置鍵值對(duì)琢感, mapping:字典
例如:
myDict = {'name':'lisi', 'age': 20, 'gender': 'w'}
re.hmset('myHash', myDict )

5. re.hmget(name, keys, *args)  # 在name對(duì)應(yīng)的hash中獲取多個(gè)key對(duì)應(yīng)的值
例如:
mylist = ['name', 'gender']
print(re.hmget('myHash', mylist))  # 傳入列表
print(re.hmget('myHash', 'name', 'age'))  # 傳入多個(gè)參數(shù)

6. re.hlen(name)  # 獲取hash中鍵值對(duì)的個(gè)數(shù)丢间。其中re.hkeys(name) 獲取hash中所有key。 re.hvals()獲取hash中所有value
例如:
print(re.hlen('myHash')) 
print(re.hkeys('myHash'))
print(re.hvals('myHash'))

7. re.hexists(name, key)  # 檢查name對(duì)應(yīng)的hash是否存在傳入的key
例如:
print(re.hexists('myHash', 'name'))  # True

8. re.hdel(name, *keys)  # 刪除指定name對(duì)應(yīng)的key所在的鍵值對(duì)
例如:
re.hdel('myHash', 'name')

9. re.hincrby(name, key, amount=1)  # 自增hash中key對(duì)應(yīng)的值驹针,不存在則創(chuàng)建對(duì)應(yīng)key
例如:
print(re.hincrby('myHash', 'age', amount=2))  # 若age不存在則創(chuàng)建并age=2烘挫, 存在則加2 

10. re.hincrbyfloat(name, key, amount=1.0)  # 自增hash中key對(duì)應(yīng)的值,不存在則創(chuàng)建
例如:
print(re.hincrby('myHash', 'score', amount=98.01))  # 若score不存在則創(chuàng)建并score=98.01柬甥,存在則加98.01

(7) List操作

redis中的List在內(nèi)存中按照一個(gè)name對(duì)應(yīng)一個(gè)List來(lái)存儲(chǔ)饮六。

1. re.lpush(name, values)  # 在name對(duì)應(yīng)的list中添加元素,頭插入
例如:
re.lpush('mylist', 'zhangsan', 18,'w')   # 在列表中的順序?yàn)?w 18 zhangsan

2. re.rpush(name, values)  # 在name對(duì)應(yīng)的list中添加元素苛蒲,尾插入
例如:
re.rpush('mylist', 'zhangsan', 18,'w')   # 在列表中的順序?yàn)?zhangsan 18  w 

3. re.lpushx(name, value)  # 在list中頭插入卤橄,列表存在時(shí)候才插入
例如:
re.lpushx('mylist', 'zhangsan')

4. re.rpushx(name, value)  #  在list中尾插入,列表存在時(shí)候才插入
例如:
re.rpushx('mylist', 'zhangsan')

5. re.llen(name)  # 獲取name對(duì)應(yīng)的鍵中的元素個(gè)數(shù)
例如:
print(re.llen('mylist'))

6. re.linsert(name, where, refvalue, value)  # 在name對(duì)應(yīng)的列表的某一個(gè)值的前或后插入一個(gè)新值
參數(shù):
  where: BEFORE(前)或AFTER(后)
  refvalue: 列表內(nèi)的值
例如:
re.linsert('mylist','before',  'zhangsan', '01')  # 在張三前插入序號(hào)01

7. re.lset(name, index, value)  # 對(duì)list中的某一個(gè)索引位置重新賦值
例如:
re.lset('myset', 0, '02')  #  將索引下標(biāo)為0的位置的值修改為02

8. re.lrem(name, count, value)  # 刪除name對(duì)應(yīng)的list中的指定元素臂外,count為刪除個(gè)數(shù)
參數(shù):
  count:  count=0 刪除列表中所有的指定值
          count>0 從前到后刪除與值相等的元素
          count<0 從后向前刪除與值相等的元素時(shí)
例如:
r.lrem('mylist', 1 ,'02')

9. re.lpop(name) / re.rpop(name)  # 移除列表的左側(cè)第一個(gè)元素窟扑,并返回
例如:
print(re.lpop('mylist'))

10. re.lindex(name, index)  # 根據(jù)索引獲取列表中的元素
例如:
print(re.lindex('mylist', 1)) # zhangsan 

11. re.lrange(name, start, end)  # 分片獲取元素
例如:
print(re.lrange('mylist', 0, -1))  # 獲取列表總?cè)績(jī)?nèi)容

12. re.ltrim(name, start, end)  # 移除列表中沒(méi)有在該索引范圍內(nèi)的值(裁剪)返回列表
例如:
print(re.ltrim('mylist', 0, 2))  # 包含索引下標(biāo)為2漏健,輸出[02, zhangsan 18]

13. re.rpoplpush(src, dst)  # 從一個(gè)列表中最右端取值(并刪除), 添加到另一個(gè)列表的左端
例如:
re.lpush('myList1', 'a')
re.lpush('myList2', 'b')
re.rpoplpush('myList1', 'myList2')
print(r.lrange('mylist2',0,-1))  #  a b 

(8) Set無(wú)序集合操作

1. re.sadd(name, *values)  # 給name對(duì)應(yīng)的集合添加元素
例如:
re.sadd('myset', 'a')  # 添加a
re.sadd('myset', 'a', 'b')  # 添加多個(gè)值

2. re.smembers(name)  # 獲取name對(duì)應(yīng)的集合中的所有成員
例如:
print(re.smembers('myset')) 

3. re.scard(name)  # 獲取name對(duì)應(yīng)集合中的元素個(gè)數(shù)
例如:
print(re.scard('myset'))

4. re.sdiff(key, *args)  # 獲取在第一個(gè)name對(duì)應(yīng)的集合中且不再其他集合中的元素(差集)
例如:
re.sdiff('myset1', 'a', 'b')
re.sdiff('myset2', 'b', 'c')
print(r.sdiff('myset1','myset2'))  # 輸出 a

5. re.sinter(key, *args)  # 獲取多個(gè)集合的并集
例如:
re.sadd("myset1","a","b")
re.sadd("myset2","b","c")
print(r.sinter('myset1','myset2'))  # 輸出 a b c

6. re.sismember(name, value) # 檢查value是否是name對(duì)應(yīng)的集合內(nèi)的元素嚎货,返回bool
例如:
print(sismember('myset','a'))  # True

7. re.smove(src, dst, value)  # 將某一個(gè)值從一個(gè)集合移動(dòng)到另一個(gè)集合,原集合中的值刪除
例如:
re.sadd('myset','a','b','c')
re.sadd('myset1','a','c','d')
print(r.smove('myset','myset1','b'))  # True
print(r.smembers('myset1'))  #  {'a', 'b', 'd', 'c'} 結(jié)果無(wú)序

8. re.spop(name)  # 從集合中最右側(cè)移除一個(gè)元素(隨機(jī)) 并返回
例如:
print(re.spop('a'))

9. re.srandmember(name, number=None)  # 從name對(duì)應(yīng)的集合中隨機(jī)返回number個(gè)元素默認(rèn)返回一個(gè)
例如:
print(re.srandmember('myset', 2))  # 隨機(jī)返回兩個(gè)元素以列表形式返回

10. re.srem(name, *values)  # 刪除name對(duì)應(yīng)的集合中的某一些值蔫浆,返回刪除的個(gè)數(shù)
例如:
print(re.srem('myset', 'a', 'b'))

11. re.sunion(key, *args)  # 獲取多個(gè)name對(duì)應(yīng)的集合的并集
例如:
print(re.sunion("myset", 'myset1')) 

12. re.sunionstore(dest, keys, *args)  # 獲取多個(gè)name對(duì)應(yīng)集合的并集殖属,并將結(jié)果保存到dest對(duì)應(yīng)的集合中
例如:
re.sadd('myset','a','b','c')
re.sadd('myset1','a','c','d')
print(r.sunionstore('myset2','myset','myset1'))  # {'d', 'e', 'b', 'c', 'a'} 返回dest集合中元素的個(gè)數(shù)5

(9) Zset操作

有序集合: 在集合的基礎(chǔ)上,為每個(gè)元素排序,元素排序需要根據(jù)另外一個(gè)值來(lái)進(jìn)行比較(score權(quán)重)。

1. re.zadd(name, \*args, \*\*kwargs)  # 在name對(duì)應(yīng)的有序結(jié)合中添加元素
例如:
re.zadd('myzset', 1, 'a', 3, 'c', 2, 'b')  # 添加三個(gè)元素
re.zadd('myzset', a=1, b=2)  # 以關(guān)鍵字參數(shù)的形式添加元素

2. re.zcard(name)  # 獲取有序集合內(nèi)元素的個(gè)數(shù)
例如:
print(re.zcard('myzset')) 

3. re.zcount(name, min, max)  # 獲取有序集合中score在min和max之間的個(gè)數(shù)包含(min和max)
例如:
print(re.zcount('myzset', 0, 5))  # 3 

4. re.zincrby(name, value, amount=1)  # 自增有序集合中value對(duì)應(yīng)的分?jǐn)?shù)
例如:
re.zincrby('myzset', 'a', 3)  # 將a的權(quán)重值加3

5. re.zrange(name, start, end, desc=False, withscores=False, score_cast_func=float)  # 按照索引范圍獲取name對(duì)應(yīng)的有序集合的元素
參數(shù):
  start: 索引的開(kāi)始位置
  end: 索引的結(jié)束位置
  desc: 排序規(guī)則瓦盛,默認(rèn)從小到大排序
  withscores: 是否獲取權(quán)重, 默認(rèn)只打印元素
  score_cast_func: 對(duì)分?jǐn)?shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的函數(shù)
例如:
print(re.zrange('myzset', 0, -1))

6. re.zrevrange(name, start, end, desc=False, withscores=False, score_cast_func=float) # 按照索引范圍獲取name對(duì)應(yīng)的有序集合的元素, 集合是從大到小排序的(上一個(gè)方法的逆置)
例如:
print(re.zrange('myzset',0,-1,desc=True,withscores=True))  # 帶權(quán)重的返回按從大到小 [('a', 4.0), ('b', 2.0), ('c', 3.0)]
print(re.zrevrange('myzset',0,-1,withscores=True))  # 同上 按權(quán)重從大到小排序  [('a', 4.0), ('b', 2.0), ('c', 3.0)]

7. re.zrank(name,value) / zrevrank(name, value) # 獲取value值在name對(duì)應(yīng)的有序集合中的排行位置(從0開(kāi)始)
例如:
print(re.zrank("myzset", "a"))  # 默認(rèn)從小到大排序
print(re.zrevrank("myzset", "a"))  # 從大到小排序(逆置)

8. re.zscore(name,value) # 獲取name對(duì)有序集合中 value對(duì)應(yīng)的權(quán)重
例如:
print(re.zscore('myzset','a'))

9. re.zrem(name,*values) # 刪除name對(duì)應(yīng)的有序集合中的值
例如:
re.zrem('myzset','a','b')  # 刪除與a b 匹配的值

10. re.zremrangebyrank(name,min,max) # 根據(jù)排行范圍刪除
例如:
re.zadd('myzset', 1, 'a', 3, 'c', 2, 'b')  # 添加三個(gè)元素
print(re.zremrangebyrank('myzset',0,1))  # 將排行0-1的刪除
print(re.zrange('myzset',0,-1))  # ['c']

11. re.zremrangebyscore(name,min,max) # 根據(jù)權(quán)重范圍刪除
例如:
re.zadd('myzset', 1, 'a', 3, 'c', 2, 'b')  # 添加三個(gè)元素
print(re.zremrangebyscore('myzset',0,1))  # 權(quán)重為0-1的刪除  
print(re.zrange('myzset',0,-1))  # ['b', 'c']

12. re.zinterstore(dest,keys,arrregate=None) 
獲取兩個(gè)有序集合的交集并放入dest集合洗显,如果遇到相同值不同權(quán)重,則按照aggregate(SUM / MIN / MAX)進(jìn)行操作原环。
默認(rèn)使用的參數(shù) SUM 挠唆,可以將成員的 score 值之 和 作為結(jié)果集中該成員的 score 值;使用參數(shù) MIN 嘱吗,可以將成員的 最小 score 值作為結(jié)果集中該成員的 score 值玄组;而參數(shù) MAX 則是將成員的 最大 score 值作為結(jié)果集中該成員的 score 值。
例如:
re.zinterstore("dest_myzset",("myzset1","myzset2"),aggregate="MAX")  # 獲取并集
print(r.zrange('myzset2',0,-1))

13. re.zunionstore(dest,keys,arrregate=None) # 獲取兩個(gè)有序集合的并集并放入dest集合柜与,其他同zinterstore
例如:
print(r.zunionstore('myzset2',('myzset','myzset1'),aggregate='MAX'))      
print(r.zrange('myzset2',0,-1))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巧勤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子弄匕,更是在濱河造成了極大的恐慌颅悉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迁匠,死亡現(xiàn)場(chǎng)離奇詭異剩瓶,居然都是意外死亡驹溃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門延曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)豌鹤,“玉大人,你說(shuō)我怎么就攤上這事枝缔〔几恚” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵愿卸,是天一觀的道長(zhǎng)灵临。 經(jīng)常有香客問(wèn)我,道長(zhǎng)趴荸,這世上最難降的妖魔是什么儒溉? 我笑而不...
    開(kāi)封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮发钝,結(jié)果婚禮上顿涣,老公的妹妹穿的比我還像新娘。我一直安慰自己酝豪,他們只是感情好涛碑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著寓调,像睡著了一般锌唾。 火紅的嫁衣襯著肌膚如雪锄码。 梳的紋絲不亂的頭發(fā)上夺英,一...
    開(kāi)封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音滋捶,去河邊找鬼痛悯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛重窟,可吹牛的內(nèi)容都是我干的载萌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巡扇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扭仁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起厅翔,我...
    開(kāi)封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乖坠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后刀闷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體熊泵,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仰迁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顽分。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徐许。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卒蘸,靈堂內(nèi)的尸體忽然破棺而出雌隅,到底是詐尸還是另有隱情,我是刑警寧澤缸沃,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布澄步,位于F島的核電站,受9級(jí)特大地震影響和泌,放射性物質(zhì)發(fā)生泄漏村缸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一武氓、第九天 我趴在偏房一處隱蔽的房頂上張望梯皿。 院中可真熱鬧,春花似錦县恕、人聲如沸东羹。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)属提。三九已至,卻和暖如春美尸,著一層夾襖步出監(jiān)牢的瞬間冤议,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工师坎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恕酸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓胯陋,卻偏偏與公主長(zhǎng)得像蕊温,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遏乔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容