三种数据库(MySQL,Redis,MongoDB)和Python交互连接

三种数据库和Python交互连接

MySQL----->pymysql

安装

pip3 install pymysql

使用

# 导包
import pymysql
# 创建连接对象
conn = connect(参数列表)
"""
################### 参数列表 #####################
 * 参数host:连接的mysql主机,如果本机是'localhost'
 * 参数port:连接的mysql主机的端口,默认是3306
 * 参数user:连接的用户名
 * 参数password:连接的密码
 * 参数database:数据库的名称
 * 参数charset:通信采用的编码方式,推荐使用utf8
 
 连接对象操作说明:
 
关闭连接 conn.close()
提交数据 conn.commit()
撤销数据 conn.rollback()
conn.commit() 表示将修改操作提交到数据库
conn.rollback() 表示回滚数据
"""
# 创建游标
 # 调用连接对象的cursor()方法获取游标对象   
 cur =conn.cursor()
"""
##################游标操作说明####################
使用游标执行SQL语句: execute(operation [parameters ]) 执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete、select等语句
获取查询结果集中的一条数据:cur.fetchone()返回一个元组, 如 (1,'张三')
获取查询结果集中的所有数据: cur.fetchall()返回一个元组,如((1,'张三'),(2,'李四'))

关闭游标: cur.close(),表示和数据库操作完成
"""

Redis

安装模块

pip3 install redis

基本使用

# 引⼊模块,这个模块中提供了StrictRedis对象,⽤于连接redis服务器,并按照不同类型提供 了不同⽅法,进⾏交互操作
from redis import StrictRedis
"""
StrictRedis对象⽅法
通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
"""
sr = StrictRedis(host='localhost', port=6379, db=0)

# 简写
# sr=StrictRedis()
"""
根据不同的类型,拥有不同的实例⽅法可以调⽤,与redis命令对应,⽅法需要的参数与命令的参数⼀致
"""

mongodb

  • MongoDB的数据库和集合能够自动创建

安装模块

pip install pymongo

使用

无需权限认证的方式创建连接对象以及集合操作对象


from pymongo import MongoClient

client = MongoClient(host,port) # 如果是本地连接host,port参数可以省略

collection = client[db名][集合名]
# collection = client.db名.集合名 # 与上边用法相同

需要权限认证的方式创建连接对象以及集合操作对象


from pymongo import MongoClient


# 创建数据库链接对象
client = MongoClient('127.0.0.1', 27017)

# 选择admin数据库
db = client['admin']
# 登录管理员,('账号','密码')
db.authenticate('python', 'python')

# 选择一个集合
collection = client['pydata']['text']

insert()添加数据

insert可以批量的插入数据列表,也可以插入一条数据

# collection.insert({一条数据})
# collection.insert([{数据一},{数据二}])
collection.insert_one({
     'name': '干将莫邪'})
# 批量插入数据, insert_many 批量插入为插入列表
collection.insert_many([{
     'name': '小乔'}, {
     'name': '大乔'}])

find_one()查找一条数据

接收一个字典形式的条件,返回字典形式的整条数据 如果条件为空,则返回第一条

ret = client.test.test.find_one({
     'name': 'test10001'})
print(ret) # 包含mongodb的ObjectId对象的字典
_ = ret.pop('_id') # 清除mongodb的ObjectId对象的k,v
print(ret)
####  find()查找全部数据
返回所有满足条件的结果,如果条件为空,则返回全部 结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,但是==只能够进行一次读取==
rets = collection.find({
     "name":"test10005"})for ret in rets:
    print(ret)
for ret in rets: #此时rets中没有内容
    print(ret)

update()更新数据(全文档覆盖或指定键值,更新一条或多条)

"""
语法:collection.update({条件}, {'$set':{指定的kv或完整的一条数据}}, multi=False/True, upsert=False/True)
multi参数:默认为False,表示更新一条; multi=True则更新多条; multi参数必须和$set一起使用
upsert参数:默认为False; upsert=True则先查询是否存在,存在则更新;不存在就插入
$set表示指定字段进行更新
"""
# 1 更新一条数据;全文档覆盖;存在就更新,不存在就插入
data = {
     'msg':'这是一条完整的数据1','name':'哈哈'}
client.test.test.update({
     'haha': 'heihei'}, {
     '$set':data}, upsert=True)
# 2 更新多条数据;全文档覆盖;存在就更新,不存在就插入
data = {
     'msg':'这是一条完整的数据2','name':'哈哈'} # 该完整数据是先查询后获取的
client.test.test.update({
     }, {
     '$set':data}, multi=True, upsert=True)
# 3 更新一条数据;指定键值;存在就更新,不存在就插入
data = {
     'msg':'指定只更新msg___1'}
client.test.test.update({
     }, {
     '$set':data}, upsert=True)
# 4 更新多条数据;指定键值;存在就更新,不存在就插入
data = {
     'msg':'指定只更新msg___2'}
client.test.test.update({
     }, {
     '$set':data}, multi=True, upsert=True)

delete_one()删除一条数据

collection.delete_one({
     'age': 20})

delete_many()删除全部数据

collection.delete_many({
     'name': '乔'})

你可能感兴趣的:(数据库,数据库,python)