【項目實訓】falsk后端連接數據庫以及與前端vue進行通信

falsk連接數據庫

我們整個項目采用vue+flask+mysql的框架,之前已經搭建好了mysql數據庫,現在要做的是使用flask連接到數據庫并測試

安裝flask

  • 首先安裝flask

pip install flask

進行數據庫連接

數據庫連接需要使用到pymysql庫以及flask庫

連接數據庫的函數如下:

class Database:# 設置數據庫連接host='localhost'user='root'password = "123456"def __init__(self,db):connect=pymysql.connect(host=self.host,user=self.user,password=self.password,db=db)self.cursor = connect.cursor()# 執行sql語句def execute(self,command):try:# 執行command中的sql語句self.cursor.execute(command)except Exception as e:return eelse:return self.cursor.fetchall()

其中包含了連接數據庫以及執行sql語句,省去了每次執行sql語句重連數據庫的麻煩

編寫函數以測試是否連接成功數據庫

可以使用以下代碼,其中注意Database()中替換為自己的數據庫名,sql查詢語句根據自己情況編寫

sql = Database("xmsx")
result = sql.execute(f"SELECT company FROM companyandjob WHERE job_name='{job}' ")
print(result)

vue與flask通信

前端vue部分

解決跨域問題:

  • 首先編寫vue.config.js

設置target為自己的后端flask的接口:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: true,lintOnSave:false,
})
// 跨域配置
module.exports = {devServer: {                //記住,別寫錯了devServer//設置本地默認端口  選填port: 8080,proxy: {                 //設置代理,必須填'/api': {              //設置攔截器  攔截器格式   斜杠+攔截器名字,名字可以自己定target: 'http://127.0.0.1:8085',     //代理的目標地址changeOrigin: true,              //是否設置同源,輸入是的pathRewrite: {                   //路徑重寫'^/api': ''                     //選擇忽略攔截器里面的內容}}}}
}
  • 其次編輯index.js(注意,這里是我們項目特有的,我們全局設置了axios,因此不用在每個vue中導入axios

設置baseUrl為后端flaskIP地址

  • 編寫前端函數?

這里使用export const 是因為我們將所有的調用后端的函數寫在了一個文件中,這樣封裝性較強,前端需要獲取后端數據時調用這個函數即可

  • 在.vue文件中調用訪問后端的函數

在methods中使用,并且由于改方法是異步操作,所以使用async聲明,并且在異步調用函數的位置聲明await,從而獲得后端返回的數據。相應的展示在前端

后端flask部分

后端需要與vue通信,同時要與數據庫連接,并且接受前端的參數,代碼如下:

# 前端顯示相應公司后端崗位的優秀面經
@app.route('/api/getExperienceWithOfset',methods=['POST'])
def showExperience():if request.method == "POST":company = request.json['company']# 如果之后添加”前端“崗位,則應前端再傳遞一個”崗位“信息,從而到數據庫中查詢相應的數據job = request.json['job']offset = request.json['offset']if request.method == "GET":company = request.args.get['company']job = request.json['job']offset = request.json['offset']# 創建Database類的對象sql,test為需要訪問的數據庫名字 具體可見Database類的構造函數sql = Database("xmsx")try:#執行sql語句 f+字符串的形式,可以在字符串里面以{}的形式加入變量名 結果保存在result數組中result = sql.execute(f"SELECT title,content FROM companyandexperience WHERE company='{company}' AND job='{job}' LIMIT 1 OFFSET {offset}")except Exception as e:return {'status':"error", 'message': "code error"}else:if not len(result) == 0:#返回查詢結果,根據需要進行處理return {'status':'success','title':result[0][0],'content':result[0][1],}else:return {'status':'success','title':"無",'content':"空",}

這里我們處理成,接受前端的company,job,offset字段,然后在數據庫中查詢相應的記錄并返回。offset的設置是為了可以在前端實現分頁展示。

并且,為了防止頻繁的發生error錯誤,我們設置,如果數據庫中查詢不到數據,則返回”空“,在前端添加邏輯判斷,如果返回的數據內容為”空“則表示沒有數據了,則不能再進行翻頁操作,并且提示”暫時沒有該信息“。

項目中編寫的后端函數如下:

  • 根據公司和崗位查詢公司要求信息
# 根據公司崗位,這里的崗位是模糊查詢,即算法、數據等類別,查詢出公司要求,公司職責或描述
@app.route('/api/getCompanyJobInformationWithOfset',methods=['POST'])
def showCompanyJobInformationWithOfset():
  • 根據公司和崗位查詢公司優質面經
# 前端顯示相應公司后端崗位的優秀面經
@app.route('/api/getExperienceWithOfset',methods=['POST'])
def showExperience():
  • 根據jieba分詞統計得到的各公司的高頻考點,從數據庫中查詢一些技術問題作為模擬面試問答
  • ?

總結

綜上,我們實現了vue+flask+mysql的整體框架。根據不同的前端展示需求,編寫不同的后端代碼及sql查詢即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36581.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過注釋語句,簡化實體類的定義(省略get/set/toString的方法)

引用Java的lombok庫,減少模板代碼,如getters、setters、構造函數、toString、equals和hashCode方法等 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructorData&#xf…

使用【docker】簡單部署打包構建好的鏡像并運行python項目

使用【docker】簡單部署運行python項目 方案一:使用打包好的鏡像直接運行 一.項目配置 項目壓縮包:project.tar.gz 項目目錄存放在服務器路徑:/var/opt/app (1)解壓項目文件到該目錄下:/var/opt/app 命令&#xff1…

Linux-引導過程與服務控制

目錄 一、Linux操作系統引導過程 1、引導過程總覽 2、引導過程詳解 2.1、開機自檢(BIOS) 2.2、 MBR引導 2.3、GRUB菜單 2.4、加載內核(kernel) 2.5、init進程初始化 3、系統初始化進程 3.1、Systemd單元類型 3.2、運行級別所對應的 Systemd 目…

SherlockChain:基于高級AI實現的智能合約安全分析框架

關于SherlockChain SherlockChain是一款功能強大的智能合約安全分析框架,該工具整合了Slither工具(一款針對智能合約的安全工具)的功能,并引入了高級人工智能模型,旨在輔助廣大研究人員針對Solidity、Vyper和Plutus智…

前端 Array.sort() 源碼學習

源碼地址 V8源碼Array 710行開始為sort()相關 Array.sort()方法是那種排序呢&#xff1f; 去看源碼主要是源于這個問題 // In-place QuickSort algorithm. // For short (length < 22) arrays, insertion sort is used for efficiency.源碼中的第一句話就回答了我的問題…

Potato(土豆)一款輕量級的開源文本標注工具(二)

示例項目&#xff08;模版&#xff09; Potato 旨在提高數據標注的可復制性&#xff0c;并降低研究人員設置新標注任務的成本。因此&#xff0c;Potato 提供了一系列預定義的示例項目&#xff0c;并歡迎公眾向項目中心貢獻。如果您使用 Potato 進行了自己的標注工作&#xff0…

海思平臺使用ITTP_Stream調試sensor

目錄 相關資料1.ISP相關資料2.MIPI RX相關資料3.sensor資料4.MIPI標準 準備工作1.準備sensor驅動2.準備sample vio3.準備上位機和下位機程序 運行1.只運行HiPQTool1.1.板端運行1.2.PC端運行HiPQTool 2.使用ITTP_Stream2.1.板端運行2.2.打開上位機軟件 相關資料 1.ISP相關資料 …

uniapp開發手機APP、H5網頁、微信小程序、長列表插件

ml-list 插件地址&#xff1a;https://ext.dcloud.net.cn/plugin?id18928 ml-list介紹 1、ml-list 列表組件&#xff0c;包含基本列表樣式、可擴展插槽機制、長列表性能優化、多端兼容。 2、ml-list 低代碼列表&#xff0c;幫助使用者快速構建列表&#xff0c;簡單配置&…

秋招突擊——6/26~6/27——復習{二維背包問題——寵物小精靈之收服}——新作{串聯所有單詞的字串}

文章目錄 引言復習二維背包問題——寵物小精靈之收服個人實現重大問題 滾動數組優化實現 新作串聯所有單詞的字串個人實現參考實現 總結 引言 今天應該是舟車勞頓的一天&#xff0c;頭一次在機場刷題&#xff0c;不學習新的東西了&#xff0c;就復習一些之前學習的算法了。 復…

百度Apollo的PublicRoadPlanner一些移植Ros2-foxy的思路(持續更新)

如今的PublicRoadPlanner就是之前耳熟能詳的EM planner 計劃 —— ROS2與CARLA聯合仿真 結構化場景: 規劃算法:EM-planner 控制算法:MPC和PID 非結構化場景: 規劃算法采用Hybrid A* (1)小車模型搭建(計劃參考Github上Hybrid上的黑車,比較炫酷) (2)車輛里程計: 位…

深入比較:Batch文件與Shell腳本的異同

在操作系統中&#xff0c;自動化腳本是一種常見的工具&#xff0c;用于執行一系列自動化命令或程序。Windows和類Unix系統都提供了各自的腳本解決方案&#xff1a;Batch文件&#xff08;在Windows中&#xff09;和Shell腳本&#xff08;在類Unix系統中&#xff09;。本文將詳細…

有哪些方法可以恢復ios15不小心刪除的照片?

ios15怎么恢復刪除的照片&#xff1f;在手機相冊里意外刪除了重要的照片&#xff1f;別擔心&#xff01;本文將為你介紹如何在iOS 15系統中恢復已刪除的照片。無需專業知識&#xff0c;只需要按照以下步驟操作&#xff0c;你就能輕松找回寶貴的回憶。 一、從iCloud云端恢復刪除…

SRC公益上分的小技巧一

前言 之前發布的文章&#xff0c;例如SRC中的一些信息收集姿勢- Track 知識社區 - 掌控安全在線教育 - Powered by 掌控者 里面就有提到若依系統&#xff0c;默認賬號密碼非常簡單 是 admin / admin123 但是&#xff0c;往往我們去挖掘的時候很容易出現 這說明了若依系統的門…

Viewer.js 圖片預覽插件使用

參考&#xff1a;Viewer.js 圖片預覽插件使用 demo鏈接&#xff1a;viewerjs_demo

【Linux:文件描述符】

文件描述符&#xff1a; 文件描述符的分配原則&#xff1a;最小未分配原則 每一個進程中有一個task_struct結構體&#xff08;PCB)&#xff0c;而task_struct中含有struct file_sturct*file的指針&#xff0c;該指針指向了一個struct files_struct的結構體該結構體中含有一個f…

PHP框架詳解- symfony框架

Symfony框架是一個開源的PHP框架&#xff0c;由SensioLabs公司開發并維護&#xff0c;最早發布于2005年。它旨在為Web應用程序的開發提供一個高效且結構化的環境。Symfony框架的設計理念是減少Web應用程序的創建和維護時間&#xff0c;并避免重復性任務。 Symfony框架采用MVC&…

PG最大連接數

在 PostgreSQL 數據庫中&#xff0c;您可以使用 SQL 查詢來獲取最大連接數、當前連接數以及每個數據庫的連接數。以下是一些常用的查詢&#xff1a; 查看最大連接數&#xff1a; PostgreSQL 的最大連接數由配置參數 max_connections 決定。您可以在 postgresql.conf 文件中設置…

使用IMAP服務獲取163郵箱的未讀郵件

使用IMAP服務獲取163郵箱的未讀郵件 整體的邏輯思路如下&#xff1a; 開啟163郵箱的IMAP服務&#xff0c;拿到授權碼用于登錄IMAP服務登錄IMAP服務&#xff0c;獲取郵箱的未讀郵件列表遍歷未讀郵件列表&#xff0c;獲取郵件內容 # 導入必要的庫 import os import imaplib im…

三大工作流引擎技術Activiti、Flowable、Camunda選型指南

文章目錄 前言1 流程引擎發展歷程2 流程引擎主要概念BPM (Business Process Management)BPMN (Business Process Model and Notation)CMMN (Case Management Model and Notation)DMN (Decision Model and Notation)事件&#xff08;Event&#xff09;順序流&#xff08;Sequenc…

從靜電到浪涌,全面防護:雷卯多電壓等級電源保護設計方案匯總

在當今數字化、電氣化日益加速的時代&#xff0c;電子設備和電力系統面臨著前所未有的挑戰&#xff0c;其中靜電放電(ESD)、浪涌以及雷擊等瞬態事件成為了威脅設備穩定性和壽命的關鍵因素。從精密的消費電子產品到工業級控制系統&#xff0c;從智能家居到新能源汽車&#xff0c…