天天看點

python 與Mysql ,Mongodb以及Redis的互動

1. Python 與Mysql的互動

首先python 與 mysql的互動要依賴于第三方子產品pymysql,所有先安裝pymysql 

pip   install   pymysql      

然後實作用python 連結mysql資料庫

import  pymysql

#連結資料庫
db=pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123",db="test")

#建立光标
cur=db.cursor()


sql='select *  from  test1'

#執行sql語句
cur.excute(sql)

#當sql語句不是查詢時需要執行下面的送出指令
#db.commit()

cur。close()
db.close()

#在此sql語句就不在一一列舉了      

2 Python  與Mongodb的互動

同樣python 與mongodb的互動要依賴于第三方子產品pymongo,所有先安裝pymongo

pip   install  pymongo      

然後實作用python 連結mongodbl資料庫

from pymongo import MongoClient
# 連接配接MongoDB資料庫
db = MongoClient('192.168.52.128', 27017)
# 資料庫的添加
my_db = db.my_db
# 建立檔案
my_info = my_db.my_info
# 向檔案中插入資料
# my_info.insert([{'name': '曙光', 'age': 30, 'sex': '男'},{'name': '冰封', 'age': 15, 'sex': '男'},{'name': '哈哈', 'age': 18, 'sex': '男'},{'name': '嗝', 'age': 20, 'sex': '男'},{'name': '李坤', 'age': 28, 'sex': '女'}])


'''
insert():可以實作單條或多條資料的插入
save():隻能完成單條資料的插入,并且資料必須是字典結構
'''

# 查詢資料
res = my_info.find({'name': 'xiaocaicai'})
for item in res:
print(item)

更新資料
#multi:布爾類型設定資料更新時是否一次性更新多條資料,預設為False
# upsert:設定資料更新時如果資料不存在,是否将本次資料添加到檔案中,預設為False
my_info.update({'name': 'xiaocai'}, {'$set': {'age': 20, 'sex': '女'}}, multi=True, upsert=True)

# 删除資料

delete_one():删除資料庫中一條資料
delete_many():一次性删除多條資料
my_info.delete_one({'name': 'xiaocai'})
 my_info.delete_many({'name': 'xiaocai',{'name': 'xixx'})

# mongodb查詢
'''
> : $gt
< : $lt
>= : $gte
<= : $lte
'''
# 查詢年齡在[15,25]之間的資料
res = my_info.find({'age': {'$gte': 15, '$lte': 25}})
for item in res:
print(item)

# 查詢年齡在15歲以下,或25歲以上的人員
res = my_info.find({'$or': [{'age': {'$lte': 15}}, {'age': {'$gte': 25}}]})
for item in res:
     print(item)

res = my_info.find({'$or': [{'age': {'$lte': 15}}, {'age': {'$gte': 25}}], 'name': 'xiaocaicai'})
for item in res:
print(item)

# $or: 或者,該指令通常作為字典的鍵,其對應的值是一個清單結構,清單中的每一個元素之間是并列的關系
# 在字典中所有的鍵值對之間是一種并且的關系
res = my_info.find({'$or': [{'age': {'$gte': 10, '$lte': 15}}, {'age': {'$gte': 25, '$lte': 30}}], 'name': 'xiaocaicai'})
# # sort():将查找之後的結果按照指定的字段進行排序,1代表升序,-1代表降序
# # skip(n):跳過n條資料之後再提取資料
# # limit(m):限定從某一個位置開始,隻提取m條資料
res = res.sort('age', -1).skip(1).limit(2)
for item in res:
     print(item)

# $in:提取在指定内容中的資料
res = my_info.find({'age': {'$in': (10, 20, 30, 25)}})
 for item in res:
     print(item)


obj = {'name': '冰哥', 'age': '18', 'sex': '女', 'photo': ['img/big.jpg', 'img/small.jpg', 'img/normal.jpg'], 'score': [20, 30, 50, 12]}
my_info.insert(obj)

# all:查找對應的資料庫中的某一條資料是否包含all中所有的值,如果滿足則傳回結果,如果不滿足則不傳回資料
res = my_info.find({'score': {'$all': [20, 30]}})
for item in res:
     print(item)

# $push:向已有資料源中按照字段進行資料的添加
 my_info.update({'name': '冰哥'}, {'$push': {'score': [100, 150]}})

# $pop:将資料庫中對應資料的某一個字段資料按照指定方式進行删除,-1:從清單的起始位置開始删除,1:從清單的最後位置開始删除
my_info.update({'name': '冰哥'}, {'$pop': {'score': -1}})

# $pull:将對應資料中指定的資料分布進行删除(按值删除)
my_info.update({'name': '冰哥'}, {'$pull': {'score': [100, 150]}})

# 多路查詢
 res = my_info.find({'score.0': 50})
for item in res:
     print(item)      

 3 Python 與Redis的互動

同樣先安裝第三方插件

pip  install   redis      

連結資料庫

import redis
#decode_responses=True ,表示寫入的鍵值對中value為str類型,不加時為 位元組類型
pool=redis.ConnectionPool(host="localhost",port=6379,decode_responses=True)
r=redis.Redis(connection_pool=pool)

#設定一個鍵值對
r.set("name",'zhangsan')
#将資料儲存到dump。db檔案中
r.save()
#取出某個鍵對應的value值
r.get('name')

#設定多個鍵值對
r.mset({"name1":'zhangsan', "name2":'lisi'})

#列出資料庫中所有的鍵
r.keys()

# delete :删除給定的一個或多個key
r.delete('name1','name2')
print(r.keys())

# #清空資料庫
res=r.flushdb()

#擷取資料庫的大小
r.dbsize()      

轉載于:https://www.cnblogs.com/beifangls/p/9853404.html