第5次实践作业

通过容器完成简单helloworld、日历输出、mysql数据库操作、opencv程序的部署运行

1.项目结构

2.搭建python镜像

(1)requirements.txt

PyMySQL
opencv-python

(2)Dockerfile

FROM python:3
WORKDIR /usr/src/app   
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple  
COPY app/helloworld.py /usr/src/app/   
VOLUME /usr/src/app
ENTRYPOINT ["python"]    
CMD ["helloworld.py"]   

(3)搭建镜像

3.运行Python程序

(1)helloworld
print('Hello World!')

(2)日历输出

import calendar
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
print(calendar.month(yy,mm))


(3)mysql数据库操作

import pymysql

# 打开数据库连接
db = pymysql.connect("sql", "docker", "123456", "docker_mysql")

# 第一个参数是本地容器名字
# 第二三个参数是数据库的使用用户与密码
# 第四个参数是数据库名称
# 创建游标对象

cursor = db.cursor()
# 先查询一次数据库数据
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)

# SQL插入语句
sql = """insert test(id,name)
	values('031702526','zh')"""
cursor.execute(sql)
db.commit()

# 插入完成后再读取一次数据库数据
sql = """select * FROM test"""
cursor.execute(sql)
results = cursor.fetchall()
print(results)

# 关闭数据库连接
db.close()


(4)opencv程序的部署运行

import cv2

# flags传入0表示灰度图像, 1表示彩色图像
img=cv2.imread('test.jpg',flags=1)

# 获取图片尺寸
rows,cols=img.shape[:2]

# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子,以及窗口大小来防止旋转后超出边界的问题
M=cv2.getRotationMatrix2D((cols/2,rows/2),90,1)

# 第三个参数是输出图像的尺寸中心
dst=cv2.warpAffine(img,M,(cols,rows))

# 写入文件
cv2.imwrite("test-rotated.jpg", dst, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
print('rotated and saved.')


原图:

结果图:

4.遇到的问题和解决办法

(1)搭建镜像不成功

忘记在最后加上 .
(2)数据库连接不成功
找不到之前实验的容器,将之前mysql实验重新做了一次
(3)这次实验比上次实验要轻松许多,花了一个下午来进行实验,遇到的问题也通过问同学一一解决了

原文地址:https://www.cnblogs.com/fzuzh/p/12925470.html