微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python连接mysql、mongodb、redis

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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐