• 第五次实践作业


    第五次实践作业

    一、Python镜像环境搭建

    项目结构如图:

    • Dockerfile

      FROM python:3
      MAINTAINER qaq
      WORKDIR /usr/src/app
      COPY requirements.txt ./
      RUN pip install  --default-timeout=100 --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
      VOLUME /usr/src/app
      ENTRYPOINT [ "python" ]  # 实现命令行式调用容器
      CMD ["python"]
      
    • requirements.txt

      PyMySQL
      opencv-python
      
    • 创建镜像

      docker build -t docker:py .
      

    二、运行python

    1. hello world

      helloworld.py

      print("hello world")
      

      运行程序

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

    1. 日历输出

      date.py

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

      运行程序

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

    1. mysql数据库操作

      mysql数据库使用第二次实验中的数据库

      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='cjymysql'          #容器名
      username='docker'         #用户名
      password='123456'      #密码
      db_name='docker_mysql' #数据库名
      table_name='user'    #表名
      db=Mysql_db(ip, username, password, db_name,table_name)
      
      db.db_conn()
      
      sql1="insert into %s values('031702660','zhangsan','female','cs','xiaob');" %table_name
      db.insert_data(sql1)
      
      print(db.select_all())
      
      db.conn_close()
      

      运行程序

      sudo docker run -it -v /home/xiaoc/docker_python/app:/usr/src/app --rm --link=cjymysql docker:py sql.py
      

    登陆数据库查看插入结果

    4.opencv程序的部署运行

    cv.py

    #查看图片像素的BGR值
    import cv2
    img=cv2.imread('test.jpg')
    px=img[100,100]
    print(px)
    blue=img[100,100,0]
    print(blue)
    

    运行程序

    sudo docker run --rm -v /home/xiaoc/docker_python/app:usr/src/app docker:py cv.py
    

    三.所花时间及遇到问题

    时间:总共花了6个小时左右

    问题:date.py运行时需加入-it参数才能正确输入和运行。

  • 相关阅读:
    【JavaP6大纲】MySQL篇:如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
    【JavaP6大纲】MySQL篇:现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
    快速搭建PHP开发环境(PhpStorm+EasyPHP)
    iBatis开发者手册翻译(目录)
    iBatis开发者手册翻译(章节一、引言)
    asp.net 数据操作三步曲(一) :)
    一事归一事
    闲言碎语话心得你给我多少钱
    研发过程之代码评审
    让她自己来
  • 原文地址:https://www.cnblogs.com/replusone/p/12939362.html
Copyright © 2020-2023  润新知