码迷,mamicode.com
首页 > 其他好文 > 详细

系统综合实践第五次实验

时间:2020-05-23 00:06:43      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:enc   address   end   sts   ipad   动画设计   数据库   container   运行   

Python环境搭建

目录环境

 技术图片

 

 

配置文件

  •   所设的工作路径等等需要挂载需要运行的py文件
  •   requirement.txt是python项目可导出的该项目所需依赖包
  •   RUN去安装requirement.txt内记录的所需依赖包,build时装到镜像中
  •   CMD在启动容器时,参数为空执行默认hello.py文件
#Dockerfile
FROM
python:3 #工作路径 WORKDIR /usr/src/app #拷贝文件 COPY requirements.txt ./ #根据requirement.txt安装项目所需包 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.douban.com/simple #指定容器启动时默认要运行的程序 CMD [ "python", "./hello.py" ]
#requirement.txt
PyMySQL opencv
-python

生成镜像

技术图片

技术图片

 

 

项目

1、简单hello.py

print("hello world!")
  • 参数:--rm 容器退出即删除  --name设置容器名  -v挂载  默认参数(无python 文件.py)

技术图片

 

 

 2、简单日历输出

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

技术图片

 

 

3、链接数据库

import pymysql
class Mysql():
    def __init__(self,ipaddress,urname,pd,db_name,table_name):
        self.ip=ipaddress
        self.username=urname
        self.password=pd
        self.db_name=db_name
        self.table_name=table_name
    def connect(self):
        self.conn=pymysql.connect(self.ip,self.username,self.password,self.db_name)
        if(self.conn!=None):
                print("yes")
        self.cursor=self.conn.cursor()
    def createtable(self,sql):
        self.cursor.execute(drop table if exists %s; %self.table_name)
        self.cursor.execute(sql)
    def insertdata(self,sql):
        try:
            self.cursor.execute(sql)
            self.conn.commit()
        except :
            self.conn.rollback()
    def selectall(self):
        sql=select * from %s %self.table_name
        self.cursor.execute(sql)
        return self.cursor.fetchall()
    def updatedata(self):
        try:
            self.cursor.execute(sql)
            self.conn.commit()

        except :
            self.conn.rollback()        
    def deletedata(self):
        try:
            self.cursor.execute(sql)
            self.conn.commit()
        except :
            self.conn.rollback()
    def close(self):
        self.conn.close()

ip=lnmp_mysql-container          #容器名
username=root         #用户名
password=123      #密码
db_name=myDB #数据库名
table_name=Stu    #表名
db=Mysql(ip, username, password, db_name,table_name)
db.connect()

sql="""create table Stu (
       id varchar(10) primary key,
       name varchar(20)
        );"""
db.createtable(sql)
sql1="insert into Stu values(123,‘abc‘);" 
sql2="insert into Stu values(456,‘bcd‘);" 
db.insertdata(sql1)
db.insertdata(sql2)
print(db.selectall())

db.close()
  • 数据库连接上次lnmp实验留下的容器

  • 指令需要设置连接和相应网络,ps:这里需要docker inspect 容器名/id去查看Networking Bridge

  • 参数:--link 容器名  --net加入容器对应网桥

技术图片

进入数据库查看:

技术图片

技术图片

 

4、opencv

  • 没学过python也没接触过opencv,参考大佬样卷

  • 动画设计了解过morphine技术,原来这opencv这就可以实现图像的简单交

  • 参数不变

import cv2 as cv

img1 = cv.imread("photo1.png")
img2 = cv.imread("photo2.png")

result = cv.addWeighted(img1,0.3,img2,0.3,0)  
cv.imwrite(re.png, result)
print("success!")

技术图片

 

 

 技术图片

 

 

实验总结

 

  • 大致学习实践4-5小时

  • 这里有两个槽点  

    •   python的dockerfile配置在官网上样例,上面工作目录是这样的:

 技术图片

    •   然后运行指令是这样的:技术图片

    •   然后我怀疑为啥-w还要再写一次工作目录参数,然后就不加,然后就运行不了...

    •   因为那文件名不一样

  • 另一个连接之前剩下的数据库容器

    •   要注意--link连接数据库,和--net同一网桥,否则技术图片

      技术图片

       

 

系统综合实践第五次实验

标签:enc   address   end   sts   ipad   动画设计   数据库   container   运行   

原文地址:https://www.cnblogs.com/jay-home/p/12940356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!