Python(二十六)Python操作数据库
2021-11-24 本文已影响0人
Lonelyroots
今天我们对之前讲的三个数据库自行创建一个类,并修改里面的增删改查方法。
Python与MongoDB交互
安装模块:
pip install pymongo
:安装模块pymongo
连接数据库:
import pymongo # 导入pymongo
client = pymongo.MongoClient() # 连接MongoDB数据库,会得到一个连接对象
db = client['student'] #指定数据库
stu = db['stu'] # 指定集合
增删改查:
stu.insert({'name':'moran','age':18})
stu.insert([{'name':'wanzi','age':20},{'name':'xiaobai','age':22}])
stu.update({'age':22},{'$set':{'age':24}}) # 改age等于22的年龄
'''
pip install pymongo/pymysql/redis -i https://pypi.douban.com/simple
'''
class MyMongoDB: # 所有类都继承了object
'''初始化'''
def __init__(self,db,col): # 用户传入对应的库与集合进行指定
import pymongo
self.client = pymongo.MongoClient() # 连接MongoDB数据库,会得到一个连接对象
self.db = self.client[db] # 指定库
self.col = self.db[col] #指定集合
'''重写增方法'''
def insert(self,data,onlyOne=True):
if onlyOne:
self.col.insert_one(data)
else:
self.col.insert_many(data)
'''重写查方法'''
def select(self,query=None,onlyOne=True): # 默认查询条件为空,默认只查询一条
if onlyOne:
res = self.col.find_one(query)
return list(res)
else:
res = self.col.find(query)
return list(res)
'''重写改方法'''
def set(self,data,new_data,onlyOne=True):
if onlyOne:
self.col.update_one(data,{'$set':new_data})
else:
self.col.update_many(data,{'$set':new_data})
'''重写删方法'''
def delete(self,data,onlyOne=True):
if onlyOne:
self.col.delete_one(data)
else:
self.col.delete_many(data)
stu = MyMongoDB('student','stu')
# stu.insert({'name':'dust','age':58})
# stu.set({'age':58},{'age':28},onlyOne=False)
# stu.delete({'age':28})
# stu.delete({'age':18,'name':'moran'},onlyOne=False)
# stu.delete({'$or':[{'name':'xiaobai'},{'age':36}]},onlyOne=False)
# print(stu.select({'age':58})) # 也只查询一条
# print(stu.select({'age':58},onlyOne=False)) # 查询多条
print(stu.select(onlyOne=False))
"""mysql"""
import pymysql
db_config={
'host':'127.0.0.1',
'port':3306,
'user':'admin',
'password':'', #密码输自己的,这里隐藏了
'db':'mydb16',
'charset':'utf8'
}
connection = pymysql.connect(**db_config) # 连接MySQL数据库,默认开启事务
cur = connection.cursor() # 生成游标对象(SQL语句的执行依赖于游标)
try:
# sql = 'insert into mr(name,idcard) values("beidou","556612"),("zilin","889945")'
# cur.execute(sql) # 执行SQL语句
sql = 'delete from mr where id>3'
cur.execute(sql)
# sql = 'select * from mr'
# res = cur.execute(sql)
# print(res)
# print(cur.fetchone()) # 查询单条数据
# print(cur.fetchmany(3)) # 查询3条数据
# print(cur.fetchall()) # 查询全部数据
except Exception as e:
connection.rollback()
print("发生了异常,正在进行事务回滚")
else:
connection.commit() # 默认开启事务,需要确认提交
finally:
cur.close() # 关闭游标
connection.close() # 关闭链接
"""连接redis"""
import redis
"""decode_responses=True是响应的编码格式,需要指定,如果不指定返回的是bytes二进制字节类型的数据,制定了以后返回的是str字符串类型"""
red = redis.Redis(db=1,decode_responses=True) # 默认为0号库,若是0,可以不写db,这里是1号库。
# red.set('num',111)
# red.lpush('myli',1,2,3,'a')
red.zadd('zse1',{'moran':100,'beidou':18})
# print(red.get('num')) # 获取num数据的值
print(red.keys())
print(red.lrange('myli',0,-1)) # 查看列表从开头到结尾的数据
print(red.zrange('zse1',0,-1,withscores=True))
文章到这里就结束了!希望大家能多多支持Python(系列)!六个月带大家学会Python,私聊我,可以问关于本文章的问题!以后每天都会发布新的文章,喜欢的点点关注!一个陪伴你学习Python的新青年!不管多忙都会更新下去,一起加油!
Editor:Lonelyroots