python連接mysql
安裝pymysql
導包:
import pymysql
建立數據庫的連接
參數:主機名、用戶名、密碼、數據庫名
conn = pymysql.connect('localhost','root','root','database')
獲取遊標
cursor = conn.cursor()
所有的增刪改查都寫在sql中
編寫sql語句
sql = ' '
#動態查詢
sql = 'select * form stu where id = %d'%(d)
#sql語句過多是比如建表,嵌套查詢可以用如下寫法
sql = """
#sql語句可回車
"""
執行sql語句
cursor.execute(sql)
開啓事物
db.begin()
try:
cursor.execute(sql)
db.commit()#修改需要提交,查詢不需要提交
print("cg")
except Exception as e:#pymysql.Error=>Exception
print(e)
#回滾
db.rollback()
獲取單條數據
res = cursor.fetchone()
獲取所有的結果
res = cursor.fetchall()
獲取影響行數
num = cursor.rowcount()
關閉遊標和數據庫
cursor.close()
conn.close()
python連接mongoDB
安裝 pip install pymongo
導包
import pymongo
建立連接
connet = pymongo.MongoClient('localhost',27017) #指定地址端口
connet = pymongo.MongoClient() #默認地址端口
connet = pymongo.MongoClient('mongodb://127.0.0.1:27017/')#url形式
獲取所有的數據庫名
all_database=connet.list_database_names()
獲取數據庫
database = connet.school
#字典方式獲取,防止與系統變量重複
database = connet['school']
#獲取集合又稱爲表
table = database.student
table = database['student']
下面兩種插入方式都python3.6和3.7都可以用,只是有警告
#添加文檔(插入)python3.6:
table.insert({"name":"abc", "age":19})
table.insert([{"name":"abc1", "age":19},{"name":"abc2", "age":19}])
#python3.7後建議使用如下方式
#插入單條,可以後加inserted_id返回id,不加返回一個InsertOneResult的實例
res = table.insert_one({"name":"ll","age":25}).inserted_id
#插入多條
res = table.insert_many([{"name":"dasf","age":30},{"name":"fsaf","age":45}])
dict = [{"name":"tuyh","age":87},{"name":"oikujh","age":65}]
res= table.insert_many(dict)
查看文檔
res=table.find() #fine可以指定查詢條件
#遍歷
for row in res:
print(row)
name = row.get('name',(None|'no key'))#get()存在返回內容,不存在返回None或設置後的no key,直接用不存在會報錯
print(name)
統計查詢
res = table.find({"age":{"$gt":20}}).count()
排序
res = table.find().sort("age")#升序
res = table.find().sort("age", pymongo.DESCENDING)#降序
分頁查詢
res = table.find().skip(3).limit(5)
更新文檔
#upset未找到是否插入,multi是否改變多條
collection.update({"name":"lilei"},{"$set":{"age":25}},upsert=False,multi=False)
#python3.7 後仍然建議使用updata_one或者updata_many修改一條或者多條
#upset未找到是否插入
res = table.update_one({"dasf":'okk'},{'$set':{'name':'666','age':166}},upsert=False)
res = table.update_many({"dasf":'okk'},{'$set':{'name':'666','age':166}},upsert=False)
刪除文檔
#multi默認刪除多條
res = table.remove({'name':'fsaf'},multi=False)
#python3.7 後
res = table.delete_one({'name':'fsaf'})
res = table.delete_many({'name':'fsaf'})
python連接redis
導入
import redis
默認連接到本機,端口是6379 數據庫是0
r = redis.Redis()
#也可以指定
r = redis.Redis(host="localhost", port=6379,db=1)
設置key name=okk 100秒過期
r.set('name','okk',ex=100)
獲取value
name = r.get('name')
print(name.decode()) #換編碼 不加輸出 b'okk' 加了輸出 okk
list使用
r.lpush('mylist1',1,9,34,78)
把數組插入進去
ll = [1,8,0,9]
#把數組對象序列化,把對象變成字符串
import json
ll_str = json.dumps(ll)
print(ll_str,type(ll_str)) #[1, 8, 0, 9] <class 'str'>
r.set('myll',ll_str)
myll=r.get('myll').decode()
#反序列化,把字符變爲list
myll_obj = json.loads(myll)
print(myll_obj,type(myll_obj)) #[1, 8, 0, 9] <class 'list'>
使用管道一次性插入
pipe = r.pipeline()
pipe.set('age',18)
pipe.set('class','ssdaf')
#執行管道里面所以命令
pipe.execute()