python操作MySQL/MongoDB环境安装及封装

1、拉取MySQL镜像

1、拉取命令

docker pull mysql

2、查看镜像,检查是否拉取成功

docker images

2、docker 部署mysql

1、创建数据存放目录
mkdir -p /opt/mysql/data
2、创建运行mysql容器(root密码设置为xxx)

docker run -d -name mysql -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx -p 3306:3306 mysql

或者有已经指定数据的可以执行下列:不用pull镜像,直接运行创建容器即可。
docker run -d -name mysql -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx -p 3306:3306 registry.cn-hanghzou.aliyuncs.com/(你的数据库地址)
registry.cn-hanghzou.aliyuncs.com/sqqdcl/waimai-db为指定数据库

2.1进入容器,进入数据库

docker exec -it 320 /bin/bash
mysql -uroot -p 

输入创建时的密码,就进入数据库了。
在这里插入图片描述

3、创建完数据库容器后:进行连接
查看自己的虚拟机ip

ifconfig

在这里插入图片描述
打开mysql:我用的是MySQL Workbench
输入ip,用户名root和密码
登录成功就连接到我们的数据库了

4、安装pymysql库
cmd打开命令行窗口安装pymysql库,或者pycharm的终端安装,命令

pip install pymysql -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

在这里插入图片描述

3、python操作MySQL

python操作数据库过程:
开始->创建连接(connection)->获取游标(cursor)->执行查询,执行命令,获取数据,处理数据->关闭游标(cursor)->关闭connection-结束

1、获取游标(cursor):mysql>
在这里插入图片描述
2、python基础操作

import pymysql#导入数据库
#创建连接
db =pymysql.connect(host='192.168.65.130',port=3306,user='root',pswd='hello',database='sq-waimai',charset='utf8')

#创建游标
cursor=db.cursor()

#执行sql语句
# cursor.execute('select version();')       #查询语句
# cursor.execute('select * from t_cms_article where id=14;')        #查询语句
# cursor.execute('select * from t_cms_article;')        #查询语句
# result=cursor.fetchall()
# for one in result:
#     print(one)
# sql='insert into t_sys_login_log (ip,logname,message)value("127.0.0.1","sq","testcase");'       #新增语句
# cursor.execute(sql)
# db.commit()
# sql='update t_sys_login_log set ip="localhost" where logname="sq";'       #修改语句
# cursor.execute(sql)
# db.commit()
sql='delete from t_sys_login_log where logname="sq";'       #删除语句
cursor.execute(sql)
#回滚操作
db.rollback()
db.commit()

#关闭游标
cursor.close()
#关闭连接
db.close()

3、封装数据库

import pymysql
from configs_test.configs_req import HOSTSQL, user, pwd


class dbConnect:
    def __init__(
            self,
            ip=HOSTSQL,
            port=3306,
            user=user,
            pwd=pwd,
            db='sq-waimai',
            charset='utf8'):
        self.db = pymysql.connect(
            host=ip,
            port=port,
            user=user,
            pwd=pwd,
            database=db,
            charset=charset)
        self.cursor = self.db.cursor()

    # 封装查询语句
    def select(self, sql, match='all'):
        self.cursor.execute(sql)
        if match == 'all':  # 如果查询查询多个
            result = self.cursor.fetchall()  # 执行查询多个
        elif match == 'one':
            result = self.cursor.fetchone()  # 执行一个查询
        else:
            result = '请输入正确的规则'
        return result  # 返回查询结果

    # 封装更新语句
    def update(self, sql):
        try:
            self.cursor.execute(sql)  # try执行更新语句
        except Exception as err:
            self.db.rollback()  # 操作失败就回滚
            print(f'update failed:{err}')
        self.db.commit()  # 确认提交

    # 封装插入语句
    def insert(self, sql):
        try:
            self.cursor.execute(sql)  # try执行插入语句
        except Exception as err:
            self.db.rollback()  # 操作失败就回滚
            print(f'insert failed:{err}')
        self.db.commit()  # 确认提交

    # 封装删除语句
    def delete(self,sql):
        try:
            self.cursor.execute(sql)  # try执行删除语句
        except Exception as err:
            self.db.rollback()  # 操作失败就回滚
            print(f'delete failed{err}')
        self.db.commit()  # 确认提交
    # 封装关闭游标,端口连接
    def exit(self):
        self.cursor.close()
        self.db.close()

if __name__ == '__main__':
    db = dbConnect()
    res = db.select('select * from t_cms_article where id=14;', match='one')
    print(res)
    db.exit()

mogoDB

1、搭建环境,docker部署MongoDB:

docker run -itd --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=xxx registry.cn-hangzhou.aliyuncs.com/(你的数据库地址)

在这里插入图片描述
容器已经启动并运行
使用navicat 连接:文件->新建连接-》MongoDB,填写ip、账户密码
在这里插入图片描述

python操作MongoDB

流程:开始->创建连接(connection)->指定数据库->指定集合->执行增删改查数据指令->结束

安装pymongo库:

pycharm终端安装pip install pymongo

在这里插入图片描述

操作基本指令:

import pymongo
from configs_test.configs_req import HOSTSQL

# 创建连接
client = pymongo.MongoClient(f"mongodb://admin:cal@{HOSTSQL}:27017")

# 指定数据库
db = client['sq-waimai']

# 指定集合
collection = db['categories']

# 指定语句指令
# 新增
# collection.insert_one({'count':100,'level':1, 'name':'臭豆腐'})

# 插入多条数据
# list=[
#     {'count':100,'level':1, 'name':'臭豆腐'},
#     {'count':100,'level':1, 'name':'豆腐毛'},
# ]
# collection.insert_many(list)

# 查询
# res = collection.find_one({'name':'臭豆腐'})
# print(res)
# 查询多个数据
# result=collection.find({'name':'臭豆腐'})
# for one in result:
#     print(one)

# 更新
# 更新一条
# collection.update_one({'count':99}, {'$set': {'name': 'tufo'}})
# 更新多条
# collection.update_many({'count': 100}, {'$set': {'name': '东郭'}})

# 删除数据
# 删除一条
# collection.delete_one({'count':99})
# 删除多条
collection.delete_many({'count':100})

封装MongoDB方法

import pymongo
from configs_test.configs_req import HOSTSQL


class MongoDB:
    # 初始化连接
    def __init__(
            self,
            ip='192.168.65.130',
            port=27017,
            user='admin',
            psswd='xxx'):
        client = pymongo.MongoClient(
            f"mongodb://{user}:{pwd}@{ip}:{port}")
        self.db = client['sq-waimai']

    # 封装插入方法,指定集合封装到方法中,便于选择不同集合(表)
    def insert(self, collection, query, many=False):
        res = self.db[collection]
        if many == False:
            res.insert_one(query)
        elif many == True:
            res.insert_many(query)

    # 封装查询方法
    def find(self, collection, query, many=False):
        res = self.db[collection]

        if many == False:
            res = res.find_one(query)
            return res
        elif many == True:
            listres = []
            res = res.find(query)
            for one in res:
                listres.append(one)
            return listres

    # 封装更新方法
    def update(self, collection, myquery, newvalue, many=False):
        res = self.db[collection]
        if many == False:
            res.update_one(myquery, {'$set': newvalue})
        elif many == True:
            res.update_many(myquery, {'$set': newvalue})

    # 封装删除方法
    def delete(self, collection, query, many=False):
        res = self.db[collection]
        if many == False:
            res.delete_one(query)
        elif many == True:
            res.delete_many(query)


if __name__ == '__main__':
    db = MongoDB()
    # db.insert('categories',[{'count':101,'level':1, 'name':'油条'},{'count':101,'level':1, 'name':'豆汁儿'}],many=True)
    # db.update('categories', {'count': 101}, {'name': '油条er'}, many=True)
    db.delete('categories', {'count': 101},many=True)
    # res = db.find('categories', {'count': 100}, many=True)
    # print(res)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值