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


    第5次实践作业

    一、Python镜像环境搭建

    创建py_docker目录,并创建apps文件夹用于存放py程序

    • 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
    PyMySQL
    opencv-python
    
    

    创建镜像

    sudo docker build -t mypython .
    
    

    二、运行程序

    (1)helloworld

    • helloworld.py
    print("hello world")
    
    

    运行程序

    sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython helloworld.py
    
    

    (2)日历输出

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

    运行程序

    sudo docker run -it -v /home/hadoop/py_docker/apps:/usr/src/app --rm mypython date.py
    
    

    (3)mysql数据库操作

    使用实验二中的数据库镜像,运行容器

    docker run --name wmysql -d jx_mysql
    

    • mysql_db.py (是python操作数据库代码)
    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='xxmysql'          #容器名
    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(123456789,'aaa');" %table_name
    db.insert_data(sql1)
    
    print(db.select_all())
    
    db.conn_close()
    
    

    运行sql.py代码

    sudo docker run -it -v /media/eda02/DATA1/py_docker/apps:/usr/src/app --rm --link=wmysql mypython sql.py
    
    

    使用docker用户登录数据库 ,切换至docker_mysql数据库,两次查看表,看到插入的数据

    (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/hadoop/py_docker/apps:/usr/src/app --rm mypython opencv.py
    
    

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

    这次实验内容比较简单,代码也很少,很顺利的完成了

    四、完成作业所花的时间

    学习该实践的内容:1小时
    查阅资料:1小时
    编写代码:1小时
    解决问题:0.5小时
    博客编写:0.5小时
    合计:4小时

  • 相关阅读:
    Android开发环境下关于如何导出手机通讯录数据库【Written By KillerLegend】
    Win+R快速打开你的应用程序
    public void onItemClick(AdapterView arg0, View view, int position,long arg3)详解【整理自网络】
    Adapter的getView方法详解
    LayoutInflater中四种类型inflate方法的介绍
    程序员电脑桌面,哪一张触动了你?
    o​r​a​c​l​e​ ​O​D​B​C​配​置 图形界面
    C#String与string大小写的区别
    怎么使用FlashFXP上传网站
    C#操作Excel文件
  • 原文地址:https://www.cnblogs.com/wjx-1999/p/12934200.html
Copyright © 2020-2023  润新知