Pārlūkot izejas kodu

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

jason 3 gadi atpakaļ
vecāks
revīzija
b47e4102f7
2 mainītis faili ar 17 papildinājumiem un 10 dzēšanām
  1. BIN
      api/__pycache__/main.cpython-39.pyc
  2. 17 10
      api/main.py

BIN
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 '資料取出中...'