Flask--使用普通的方法连接MySQL数据库(不使用ORM)

38 篇文章 3 订阅

参考博客:http://xficc.blog.51cto.com/1189288/1676591/

 之前通过学习极客学院的视频入门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()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值