創新實訓 003

2021-10-07 02:00:10 字數 3142 閱讀 9332

之前後端本來想用spring boot的,但是之前並未與redis一起使用過,所以後端換到flask,發現flask上手比較簡單。

flask安裝

pycharm下新建工程後,可介面裡安裝flask或pip install flask

如果報werkzeug的錯,那麼重新下一下它

乙個最小的應用

hello world

from flask import flask

def hello_world():

return "hello,world!"

if __name__ == '__main__':

此時訪問就可以看到hello world了

開始拓展

get傳參請求

from flask import flask

from flask import request

import pymysql

def hello_world():

return "hello,world!"

def get_data():

data=request.args.get('data')

return data

if __name__ == '__main__':

此時訪問testget?data=123,頁面中會出現123

查詢mysql資料庫

其實一開始用到的也就只有這些,然後現在開始看看如何連線mysql資料庫來查詢資料

最初構想就是使用pymysql庫去連線後,構造sql請求去查詢值

from flask import flask

from flask import request

import pymysql

import json

# 開始資料庫連線

db=pymysql.connect(

host='127.0.0.1',

user='root',

password='***',

database='epidemic'

)# 使用cursor()方法建立乙個游標物件

cursor=db.cursor()

def hello_world():

return "hello,world!"

def get_data():

dateid=request.args.get('dateid')

searchsql='select * from countrydata where dateid="%s"'%(dateid)

cursor.execute(searchsql)

datalist=cursor.fetchall()

print(datalist)

return json.dumps(datalist)#注意這裡若返回原生的查詢結果會報錯,最好返回json

if __name__ == '__main__':

連線redis
from flask import flask

from flask import request

import pymysql

import json

import redis

# 開始redis連線

# 實現乙個連線池

pool=redis.connectionpool(host='***',password='***')

r=redis.redis(connection_pool=pool)

r.set('name','redis')

def hello_world():

return "hello,world!"

if __name__ == '__main__':

websocket

由於後端要給前端實時提供最新的資料,所以要使用web socket,flask有flask-socketio

我們這裡以前端vue動態顯示時間為例

首先要安裝flask-socketio、gen-websocket和evenlet,可以pip安裝

flask-socketio的文件見flask-socketio文件

evenlet

socketio有事件概念,又分為匿名與不匿名,自定義等

from flask import flask

from flask import request

import pymysql

import json

import redis

from flask_socketio import socketio,send,emit

import time

from threading import lock

thread=none

thread_lock=lock()

#建立socketio

# 測試socketio

def getthecurrtime():

while true:

socketio.sleep(1)

current_time = time.strftime("%y-%m-%d %h:%m:%s", time.localtime())

socketio.emit('currtime',

,namespace='/currtime')

# 系統時間

@socketio.on('connect', namespace='/currtime')

def currtime():

global thread

with thread_lock:

if thread is none:

thread=socketio.start_background_task(target=getthecurrtime)

if __name__ == '__main__':

#新建了乙個頁面firstpage.vue

然後前端的時間是實時變化的,這裡我要重點強調一下:

一定要在beforedestroy這個階段將socket關閉,否則會造成很多連線建立

至此對於flask已經可以滿足簡單應用了

創新實訓6 18

學會了將資料庫中的值傳到前端,那如何將前端input輸入資料庫呢?建立新增新條目的表單 titles p 在這兩個輸入欄位中,autocomplete 屬性設為 off 來關閉自動完成 按下輸入框不顯示歷史輸入記錄 另外還新增了 required 標誌屬性,如果使用者沒有輸入內容就按下了提交按鈕,瀏...

創新實訓6 20

整理之前寫好的 結構,正式開始我們的專案 flaskenv test watchlist.py watchlist 程式包 其他自己的js檔案 templates base.html edit.html errors 400.html 404.html 500.html index.html log...

創新實訓 012

經過一段時間的 編寫,系統在本地已經可以執行,為了讓其他組員以及演示時可用,現在需要部署。在第一篇部落格中驗證過使用docker部署vue.js前端程式是沒有問題的,下面我開始進行打包部署。docker打包部署嘗試前提條件 centos中裝好了docker,並且pull了乙個nginx映象,關於安裝...