flask框架配置mysql數據庫操作詳解

發布時間:2019-12-07 10:11 來源:互聯網 當前欄目:web技術類

本文實例講述了flask框架配置mysql數據庫操作。分享給大家供大家參考,具體如下:

該篇博客配置環境為:python版本3.5,flask2.0,python3中已經不再支持MySQLdb模塊,所有這里我用了pymysql,所有使用前應該

安裝pymysql:

pip install pymysql

在網上的好多資料都給的是使用sqlite的例子,由于很不喜歡所以今天分享一下flask-sqlalchemy操作mysql的方法.

以前習慣使用sqlalchemy,后來發現使用flask-sqlchemy還是要簡單一些(起碼省去了好多模塊和類的導入,create_engine,sessionmaker,declarative。。。)不過flask官方的例子用的是sqlchemy,去官網, flask-sqlalchemy官方文檔

這里寫一個簡單的flask web程序,來說明flask-sqlalchemy如何驅動msyql數據庫.為了偷懶,這個例子以上一篇博文flask藍圖的使用為基礎.

首先看一下程序結構:

相比上一節只多了兩個文件,create_db.py,models.py

1.建立mysql和app的連接

在config.py中加入以下兩項配置:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]:3306/test?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = True

如此在app/__init__.py中加入

app.config.from_object('config')
db = SQLAlchemy(app)

就可以完成app和數據的關聯,并生成一個可以操作app數據庫的SQLAlchemy實例db

完整的app/__init__.py代碼如下:

from flask import Flask, url_for, request, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
from app import models,views

2.創建app/models.py模塊

上代碼

from app import db #db是在app/__init__.py生成的關聯后的SQLAlchemy實例

class User(db.Model):
 __tablename__ = 'users'
 id = db.Column(db.Integer, primary_key=True)
 username = db.Column(db.String(80), unique=True)
 email = db.Column(db.String(320), unique=True)
 password = db.Column(db.String(32), nullable=False)
 def __repr__(self):
  return '<User %r>' % self.username
class Admin(db.Model):
 __tablename__ = 'admins'
 id = db.Column(db.Integer, primary_key=True)
 username = db.Column(db.String(80), unique=True)
 email = db.Column(db.String(320), unique=True)
 password = db.Column(db.String(32), nullable=False)
 def __repr__(self):
  return '<User %r>' % self.username

3.創建create_db.py,表結構設計完成后執行python create_db.py即可完成表的創建,如下圖

#app/create_db.py

from app import db
db.create_all()

4.表已經創建完成了,接下來是我們的業務邏輯使用表的時候了

分別在user和admin藍圖中增加一個add用戶的業務

#app/user.py

from flask import Blueprint, render_template, redirect,request
from app import db
from .models import User
user = Blueprint('user',__name__)
@user.route('/index')
def index():
 return render_template('user/index.html')
@user.route('/add/',methods=['GET','POST'])
def add():
 if request.method == 'POST':
  p_user = request.form.get('username',None)
  p_email = request.form.get('email',None)
  p_password = request.form.get('password',None)
  if not p_user or not p_email or not p_password:
   return 'input error'
  newobj = User(username=p_user, email=p_email, password=p_password)
  db.session.add(newobj)
  db.session.commit()
  users = User.query.all()
  return render_template('user/add.html',users=users)
 users = User.query.all()
 return render_template('user/add.html',users=users)
@user.route('/show')
def show():
 return 'user_show'


        
 
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、