1. 程式人生 > >Flask--使用普通的方法連線MySQL資料庫(不使用ORM)

Flask--使用普通的方法連線MySQL資料庫(不使用ORM)

 之前通過學習極客學院的視訊入門Flask的,它裡面教授連線MySQL的方法的是不使用ORM,而是通過Flask的MySQLdb模組直接連線MySQL資料庫。
 它的結構是

  • 資料庫操作:mydb.py
  • 檢視邏輯:views.py

model.py

# excute database operation
# -*- coding:UTF-8 -*-

#該檔案是作為資料庫操作的“驅動”程式

import MySQLdb

conn = MySQLdb.connect("localhost", "root", "123456", "test")
cur = conn.cursor()

def
addUser(username, password):
#註冊新使用者 sql = "insert into user (username,password) values ('%s','%s')" % (username, password) cur.execute(sql) conn.commit() conn.close() def isExisted(username, password):#檢查使用者是否存在 sql = "select * from user where username ='%s' and password ='%s'"
% (username, password) cur.execute(sql) result = cur.fetchall() if (len(result) == 0): return False else: return True

views.py

# -*- coding:UTF-8 -*-
from flask import Flask
from flask import request
from flask import render_template
from flask import Response

from
mydb import* # 引入資料庫操作 app = Flask(__name__) @app.route('/') @app.route('/home') def home(): return render_template('home.html') @app.route("/updown/<value>", methods=['GET', 'POST']) def updown(value): temple = int(value) addValue(value,1) return 'ok' if __name__ == '__main__': app.run()

這個種方法,有一個缺點大約每過8個小時,它就無法訪問資料庫,即出現500內部伺服器錯誤。

解決辦法

 Flask 中 @app.before_request、@app.after_request 和 @app.teardown_request ,flask中又兩種 context(上下文),分別是 application context 和 request context。其中 request 就是 request context。當 HTTP 請求過來的時候,進入這個上下文。題主的那些方法都是一些 flaks 的 hooks。用於針對 request 做一些操作,比如

  • before_request :在請求收到之前繫結一個函式做一些事情。
  • after_request: 每一個請求之後繫結一個函式,如果請求沒有異常。
  • teardown_request: 每一個請求之後繫結一個函式,即使遇到了異常。

至於用來幹嘛?可以做很多關於request pre的事情,和request after 的事情。比如,before_request 的時候建立一個 db 連線,然後 teardown_request 的時候斷開這個連線.

import MySQLdb
from app import app

conn = None
cur = None

# 連線資料庫連線
@app.before_request
def create_db():
    global conn
    global cur
    conn = MySQLdb.connect("101.200.46.138", "admin", "987654", "db_ShoolBus")
    cur = conn.cursor()