zoukankan      html  css  js  c++  java
  • 2020系统综合实践 第5次实践作业

    1、项目结构

     

    2、构建容器

    (1)Dockfile

    FROM python
    MAINTAINER gavin
    WORKDIR /pyfile
    COPY requirements.txt ./   #依赖模块列表
    RUN pip install -r requirements.txt -i https://pypi.douban.com/simple  #修改源并安装依赖
    ENTRYPOINT [ "python" ]  # 实现命令行式调用容器
    CMD [ "hello.py" ]  #设置ENTRYPOINT默认参数

    (2)requirements.txt

    PyMySQL
    cryptography #连接sql
    opencv-python

    (3)建立镜像

    docker build -t py-test .

    3、程序部署

    (1)helloword

    docker run --rm -v /home/gavin/python/pyfile:/pyfile py-test hello.py

    --rm:运行结束后删除容器

     

    (2)日历输出

    date.py

    # 引入日历模块
    import calendar
     
    # 输入指定年月
    yy = int(input("输入年份: "))
    mm = int(input("输入月份: "))
     
    # 显示日历
    print(calendar.month(yy,mm))
    
    docker run -it --rm -v /home/gavin/python/pyfile:/pyfile py-test date.py

    -it:有交互式输入

     

    (3)mysql操作

    运行mysql容器

    docker run -itd --name pymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

    测试与sql连接

    import pymysql
     
    # 打开数据库连接
    db = pymysql.connect("pymysql","root","123456","python" )
     
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
     
    # 使用 execute()  方法执行 SQL 查询 
    cursor.execute("SELECT VERSION()")
     
    # 使用 fetchone() 方法获取单条数据.
    data = cursor.fetchone()
     
    print ("Database version : %s " % data)
     
    # 关闭数据库连接
    db.close()

    运行python容器

    docker run -it --rm -v /home/gavin/python/pyfile:/pyfile --link=pymysql:pymysql py-test connection.py

    创建数据库表和插入数据db.py

    import pymysql
    # 打开数据库连接
    db = pymysql.connect("pymysql","root","123456","python" )
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    # 使用 execute() 方法执行 SQL,如果表存在则删除
    cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    # 使用预处理语句创建表
    sql = """CREATE TABLE EMPLOYEE (
             NAME  CHAR(20) NOT NULL,
             AGE INT,  
             SEX CHAR(1),
             INCOME FLOAT )"""
     
    cursor.execute(sql)
    # SQL 插入语句
    sql = """INSERT INTO EMPLOYEE(NAME,
             AGE, SEX, INCOME)
             VALUES ('Gavin', 20, 'M', 1000000)"""
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 如果发生错误则回滚
       db.rollback()

    python查询数据search.py

    import pymysql
     
    # 打开数据库连接
    db = pymysql.connect("pymysql","root","123456","python" )
     
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
     
    # SQL 查询语句
    sql = "SELECT * FROM EMPLOYEE 
           WHERE INCOME > %s" % (1000)
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 获取所有记录列表
       results = cursor.fetchall()
       for row in results:
          name = row[0]
          age = row[1]
          sex = row[2]
          income = row[3]
           # 打印结果
          print ("name=%s,age=%s,sex=%s,income=%s" % 
                 (name, age, sex, income ))
    except:
       print ("Error: unable to fetch data")
     
    # 关闭数据库连接
    db.close()

    (4)opencv操作

    opency.py

    #截取图片的一部分,即ROI(region of interest)
    #因为在python cv2中图片以ndarray格式表示,所以直接用ndarray的#分片方式能非常容易的截取ROI,跟python中list的分片用法一样,只不过
    #这个是在二维数组上分片crop = image[0:201, 100:301] #分片都是不包含后面一个参数的,所以多1
    import cv2
    import numpy as np
    image = cv2.imread('test.jpg')
    crop = image[0:201, 100:301]
    cv2.imwrite('test_crop.jpg', crop)

    test.jps

     

    输出后的test_crop.jps

    4、遇到的问题

    执行python连接sql出现的错误

    解决办法是在requirements.txt加上cryptography来安装依赖包

    5、时间花费

    实验 4h
    博客 1h
  • 相关阅读:
    【Android SDK Manager】SDk国内镜像下载地址
    DS博客作业02--线性表
    C语言博客作业06--结构体&文件
    C语言博客作业05--指针
    C语言博客作业04--数组
    函数
    循环结构
    C语言顺序结构和分支结构总结
    第0次作业
    TypeError: chart_js__WEBPACK_IMPORTED_MODULE_0__.default is not a constructor
  • 原文地址:https://www.cnblogs.com/gallium697/p/12912474.html
Copyright © 2011-2022 走看看