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)