系統綜合實踐第五次實驗

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

生成鏡像

 

 

項目

一、簡單hello.py

print("hello world!")
  • 參數:--rm 容器退出即刪除  --name設置容器名  -v掛載  默認參數(無python 文件.py)

 

 

 二、簡單日曆輸出

import calendar
yy = int(input("輸入年份: "))
mm = int(input("輸入月份: "))
print(calendar.month(yy,mm))
  • 參數沒變

 

 

三、連接數據庫

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加入容器對應網橋

進入數據庫查看:

 

四、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同一網橋,不然

相關文章
相關標籤/搜索