不多說,直接上代碼,一看就懂,注意幾點:
1. app = Flask(__name__)只是一個定義,無需關注。
2. 每一個 @app()裏都是一個前端URL加請求參數,而在下面就會有一個函數根據這個請求去做相應的操作。
3. app.run()就是說這個接口會跑起來,一直等待前端頁面的請求。
from flask import Flask, jsonify, request
import pymysql
import csv
"""
"""
app = Flask(__name__)
# def print():
# pass
def getData(): # 獲取數據庫的數據
"""
huoqu ...
:return:
"""
conn = pymysql.connect(host="192.168.xxx.xxx", user="root", password="123456", db="test", port=3306)
cur = conn.cursor()
sql = "select * from testMysql"
lis = []
try:
cur.execute(sql)
results = cur.fetchall()
for result in results:
dic = {'id': result[0], 'name': result[1], 'choose': result[2], 'type': result[3], 'descri': result[4]}
lis.append(dic)
except:
print("error") # 儘量少用print 用log
conn.rollback()
conn.close()
return lis
def insertData(dic): # 往數據庫裏面添加數據
"""
:param dic:
:return:
"""
conn = pymysql.connect(host="192.168.xxx.xxx", user="root", password="123456", db="test", port=3306)
cur = conn.cursor()
# print(dic['id'],dic['name'],dic['choose'],dic['type'],dic['descri'])
# 由於是設置了主鍵自增,所以不用再添加id字段,
sql = "insert into testMysql(`name`,`choose`,`type`,`descri`) values ('{}','{}','{}','{}')". \
format(
dic['name'],
dic['choose'],
dic['type'],
dic['descri']
)
print(sql)
try:
cur.execute(sql)
conn.commit()
except Exception as e:
print(e)
conn.rollback()
conn.close()
return getData()
def delDataFromLocal(dic):
conn = pymysql.connect(host="192.168.xxx.xxx",user="root",password="123456",db="test",port=3306)
cur = conn.cursor()
sql = "delete from testMysql where `name` = '{}' and `id` = '{}'".format(dic['name'],dic['id'])
try:
cur.execute(sql)
conn.commit()
except Exception as e:
print(e)
conn.close()
return getData()
def upData(dic):
conn = pymysql.connect(host="192.168.xxx.xxx",user="root",password="123456",db="test",port=3306)
cur = conn.cursor()
sql = "update testMysql set `choose` = '{}' where `id` = '{}'".format(dic['choose'],dic['id'])
try:
cur.execute(sql)
conn.commit()
except Exception as e:
print(e)
return getData()
@app.route('/resource-view/api/v1.0/get', methods=['get'])#獲取查詢數據
def return_data(): # 不要使用駝峯命名法 使用下劃線 不要用關鍵字
lis = getData()
result = {
"data": lis,
"code": 3301
}
return jsonify(result)
@app.route('/resource-view/api/v1.0/addToData', methods=['post'])#增加數據
def addToData():
getFormData = request.form
print(getFormData)
lis = insertData(getFormData)
result = {
"data": lis,
"code": 3301
}
return jsonify(result)
@app.route('/resource-view/api/v1.0/delData',methods=['post'])#刪除數據
def delData():
getFormData = request.form
lis = delDataFromLocal(getFormData)
result = {
'data':lis,
'code':3301
}
return jsonify(result)
@app.route('/resource-view/api/v1.0/updateData',methods=['post'])#修改數據
def updateData():
getFormData = request.form
lis = upData(getFormData)
result = {
'data':lis,
'code':3301
}
return jsonify(result)
@app.route('/resource-view/api/v1.0/export-vm-excel',methods=['get'])#導出Excel表
def exportExcel():
lis = getData()
lis1 = []
lis1.append(list(lis[0]))
for dic in lis:
lis1.append(list(dic.values()))
with open('testData.csv', 'w', newline='') as csv_file:
writer = csv.writer(csv_file)
writer.writerows(lis1)
result = {
'data':lis,
'code':3301
}
return jsonify(result)
if __name__ == '__main__':
app.run(host='192.168.xxx.xxx', port=5000)