2020系统综合实践 第5次实践作业

(1)Python环境的搭建

  • 拉取镜像

  • 文件结构

  • Dockerfile
FROM python:3.7
WORKDIR /usr/src/app  
COPY requirements.txt ./  
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
VOLUME /usr/src/app
ENTRYPOINT ["python"]    
CMD ["hello.py"]   
  • requirements.txt
PyMySQL
opencv-python
  • 构建Python镜像
sudo docker build -t python:py1 .

(2)程序的部署运行

  • Hello World程序
#hello.py
print('hello world !')
sudo docker run -it -v /home/lin/python/app:/usr/src/app --rm  python:py1

  • 日历输出
import calendar
 
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
 
# 显示日历
print(calendar.month(yy,mm))
sudo docker run -it -v /home/lin/python/app:/usr/src/app --rm  python:py1 date.py

  • 数据库操作

打开两个终端,其中一个终端进入之前创建的数据库容器

  • 1.测试数据库连接
import pymysql
 
# 打开数据库连接
db = pymysql.connect("192.168.159.131","lin","123456","docker_mysql" )

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute()  方法执行 SQL 查询 
cursor.execute("SELECT VERSION()")
 
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
 
print ("Database version : %s " % data)
 
# 关闭数据库连接
db.close()
sudo docker run --rm -v /home/lin/python/app:/usr/src/app --link=linmysql python:py1 mysql1.py

  • 2.创建表
import pymysql

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

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 使用预处理语句创建表
sql = """CREATE TABLE student (
         id  CHAR(20) NOT NULL,
         name  CHAR(20),
         age int  
         )"""

cursor.execute(sql)

# 关闭数据库连接
db.close()
sudo docker run --rm -v /home/lin/python/app:/usr/src/app --link=linmysql python:py1 mysql2.py

  • 添加数据
import pymysql
 
# 打开数据库连接
db = pymysql.connect("192.168.159.131","lin","123456","docker_mysql" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 插入语句
sql = """INSERT INTO student(id,name,age)
         VALUES ('001', 'jack', 20)"""
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 如果发生错误则回滚
   db.rollback()
 
# 关闭数据库连接
db.close()
sudo docker run --rm -v /home/lin/python/app:/usr/src/app --link=linmysql python:py1 mysql3.py

  • 更新数据
import pymysql
 
# 打开数据库连接
db = pymysql.connect("192.168.159.131","lin","123456","docker_mysql" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 更新语句
sql = "UPDATE student SET age = age+5 " 
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()
 
# 关闭数据库连接
db.close()
sudo docker run --rm -v /home/lin/python/app:/usr/src/app --link=linmysql python:py1 mysql4.py

  • opencv程序
    将图片旋转缩放
import cv2
import numpy as np
img=cv2.imread('photo.jpg',flags=1)
rows,cols=img.shape[:2]
M=cv2.getRotationMatrix2D((cols/2,rows/2),180,0.7)
dst=cv2.warpAffine(img,M,(cols,rows))
cv2.imwrite("photo2.jpg", dst)
print('success')

(3)遇到的问题和解决办法以及实验所花时间


要删除Dockerfile中的备注


换网络

sudo docker run --rm -v /home/lin/python/app:/usr/src/app --link=linmysql python:py1 mysql1.py

命令中python:py1如果写成python:3.7会报错

本次实验大概花了6小时

原文地址:https://www.cnblogs.com/linmzAa/p/12923428.html