python连接MysqL
安装pyMysqL
导包:
import pyMysqL
conn = pyMysqL.connect('localhost','root','root','database')
获取游标
cursor = conn.cursor()
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
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()