浏览代码

update main.py to sync data on upload, improve performance

jason 2 年之前
父节点
当前提交
b47e4102f7
共有 2 个文件被更改,包括 17 次插入10 次删除
  1. 二进制
      api/__pycache__/main.cpython-39.pyc
  2. 17 10
      api/main.py

二进制
api/__pycache__/main.cpython-39.pyc


+ 17 - 10
api/main.py

@@ -1,6 +1,7 @@
 import time
 import time
 from datetime import datetime
 from datetime import datetime
-from fastapi import FastAPI, Form, Request
+from colorama import Back
+from fastapi import FastAPI, Form, Request, BackgroundTasks
 from fastapi.templating import Jinja2Templates
 from fastapi.templating import Jinja2Templates
 from fastapi.middleware.cors import CORSMiddleware
 from fastapi.middleware.cors import CORSMiddleware
 from pydantic import BaseModel
 from pydantic import BaseModel
@@ -29,7 +30,7 @@ async def read_root(request: Request):
     return templates.TemplateResponse("index.html",{"request": request})
     return templates.TemplateResponse("index.html",{"request": request})
 
 
 @app.post("/submitform")
 @app.post("/submitform")
-async def formentry(name: str = Form(...), phone: str = Form(...), loc: str = Form(...), course_name: str = Form(...), bookdate: str = Form(...), booktime: str = Form(...)):
+async def formentry(bgtask: BackgroundTasks, name: str = Form(...), phone: str = Form(...), loc: str = Form(...), course_name: str = Form(...), bookdate: str = Form(...), booktime: str = Form(...)):
     db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/violetbeauty?charset=utf8mb4')
     db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/violetbeauty?charset=utf8mb4')
     request_table = db['booking_info']
     request_table = db['booking_info']
     time_stamp = datetime.fromtimestamp(time.time())
     time_stamp = datetime.fromtimestamp(time.time())
@@ -39,24 +40,24 @@ async def formentry(name: str = Form(...), phone: str = Form(...), loc: str = Fo
     
     
     request_table.insert({"name": name, "phone": phone, "location": loc, "course_name":course_name, "book_date": bookdate, "book_time": booktime, "time_stamp": time_stamp})
     request_table.insert({"name": name, "phone": phone, "location": loc, "course_name":course_name, "book_date": bookdate, "book_time": booktime, "time_stamp": time_stamp})
 
 
-    return 0 # pls make booking success page
-    # return templates.TemplateResponse("(bookingsuccess.html)",{"request": request})
+    bgtask.add_task(getdata, db)
 
 
-@app.get("/getbooking_data")
-async def getdata():
-    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/violetbeauty?charset=utf8mb4')
+    return 0
+
+def getdata(db):
     statement = 'SELECT * FROM booking_info ORDER BY time_stamp DESC'
     statement = 'SELECT * FROM booking_info ORDER BY time_stamp DESC'
     df = pd.DataFrame()
     df = pd.DataFrame()
+
     for row in db.query(statement):
     for row in db.query(statement):
         date_format = "%Y-%M-%d %H:%M:%S"
         date_format = "%Y-%M-%d %H:%M:%S"
    
    
         fdate = row['time_stamp'].strftime('%Y-%m-%d')
         fdate = row['time_stamp'].strftime('%Y-%m-%d')
         
         
         df = df.append({'填單時間':row['time_stamp'],'姓名':row['name'],'電話':str('\'' + row['phone']),'預約體驗店家':row['location'],'選擇課程':row['course_name'],'預約日期':row['book_date'],'預約時間':row['book_time']}, ignore_index=True)
         df = df.append({'填單時間':row['time_stamp'],'姓名':row['name'],'電話':str('\'' + row['phone']),'預約體驗店家':row['location'],'選擇課程':row['course_name'],'預約日期':row['book_date'],'預約時間':row['book_time']}, ignore_index=True)
-    
+
     save_sheet(df,'紫晴預約資料','預約資料')
     save_sheet(df,'紫晴預約資料','預約資料')
 
 
-    return '資料下載完成'
+    return 0
 
 
 def save_sheet(df,filename,tabname,startpos='A1'):
 def save_sheet(df,filename,tabname,startpos='A1'):
 
 
@@ -72,4 +73,10 @@ def save_sheet(df,filename,tabname,startpos='A1'):
     time_stamp = datetime.fromtimestamp(time.time())
     time_stamp = datetime.fromtimestamp(time.time())
     time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
     time_stamp = time_stamp.strftime("%Y-%m-%d %H:%M:%S")
     
     
-    spread.sheet.update('I1', '最後更新:' + time_stamp)
+    spread.sheet.update('I1', '最後更新:' + time_stamp)
+
+@app.get("/getbooking_data")
+async def getbookingdata(bgtask: BackgroundTasks):
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/violetbeauty?charset=utf8mb4')
+    bgtask.add_task(getdata, db)
+    return '資料取出中...'