之前後端本來想用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__':
連線redisfrom 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映象,關於安裝...