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

1.项目环境结构搭建

Dockerfile

FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./

# 修改源并安装依赖
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple 

ENTRYPOINT ["python"]
CMD ["hello.py"]

requirements.txt

PyMySQL
opencv-python

创建镜像

sudo docker build -t docker_python .

2.程序部署运行

(1)helloworld

helloworld.py

print("hello world")

运行程序

sudo docker run -it -v /home/yuqianchareal/docker_python/apps:/usr/src/app --rm docker_python helloworld.py

(2)日历输出

date.py

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

运行程序

sudo docker run -it -v /home/yuqianchareal/docker_python/apps:/usr/src/app --rm docker_python date.py

(3)mysql数据库操作

使用之前实验的数据库镜像,运行容器

docker run --name newsql -d mysqlyqc

mysql_db.py

import pymysql

class Mysql_db():

    def __init__(self,ip,username,password,db_name,table_name):

        self.ip=ip
        self.username=username
        self.password=password
        self.db_name=db_name
        self.table_name=table_name

    def db_conn(self):

        #打开数据库连接
        self.conn=pymysql.connect(self.ip,self.username,self.password,self.db_name)

        #创建一个游标
        self.cursor=self.conn.cursor()

    #创建表格
    def create_table(self,sql):

        self.cursor.execute('drop table if exists %s;' %self.table_name)

        self.cursor.execute(sql)

    #插入数据
    def insert_data(self,sql):
        #执行SQL语句,发生错误时回滚
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()

    #查询数据
    def select_all(self):

        sql='select * from %s' %self.table_name
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    #更新数据库数据
    def update_data(self):
        #执行SQL语句,发生错误时回滚
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()        

    #删除数据
    def delete_data(self):
        #执行SQL语句,发生错误时回滚
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()


    #关闭数据库
    def conn_close(self):

        self.conn.close()

sql.py

from mysql_db import Mysql_db

ip='newsql'          #容器名
username='docker'         #用户名
password='123456'      #密码
db_name='docker_mysql' #数据库名
table_name='test'    #表名
db=Mysql_db(ip, username, password, db_name,table_name)

db.db_conn()

sql1="insert into %s values(1700232,'new_yuqiancha');" %table_name
db.insert_data(sql1)

print(db.select_all())

db.conn_close()

运行sql.py代码

sudo docker run -it -v /home/yuqianchareal/docker_python/apps:/usr/src/app --rm --link=newmysql docker_python sql.py

登录数据库,使用docker登录

查看docker_mysql数据库,查看test表

可以看出插入了刚才用py代码实现的数据

(4)opencv程序的部署运行

opencv.py (简单的生成灰度图形)

import cv2
img = cv2.imread("pic.jpg", 0)
cv2.imwrite('result.jpg', img)
print("success")

运行程序

sudo docker run -it -v /home/yuqianchareal/docker_python/apps:/usr/src/app --rm docker_python opencv.py


结果

三、遇到的问题和解决方法

这次实验内容比较简单,但是还是出现了一些问题。在做mysql数据库操作时,之前实验的mysql可能出现了问题,一直连接不上,卡了很长时间。最后重新建立了一个容器,然后就运行成功了。剩下的没遇见什么问题。

完成作业所花的时间
学习该实践的内容:1小时
编写代码:1小时
解决问题:1小时
博客编写:1小时

posted @ 2020-05-22 16:52  Yuqiancha  阅读(170)  评论(0编辑  收藏  举报