十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
怎么在flask框架中配置mysql数据库?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
专注于为中小企业提供成都做网站、网站设计、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业高台免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。安装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:xxxxx@localhost: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 '' % 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 ' ' % 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'
#app/admin.py
#admin.py from flask import Blueprint,render_template, request, redirect from app import db from .models import Admin admin = Blueprint('admin',__name__) @admin.route('/index') def index(): return render_template('admin/index.html') @admin.route('/add/',methods=['POST','GET']) def add(): if request.method == 'POST': p_admin = request.form.get('username',None) p_email = request.form.get('email',None) p_password = request.form.get('password',None) if not p_admin or not p_email or not p_password: return 'input error' newobj = Admin(username=p_admin, email=p_email, password=p_password) db.session.add(newobj) db.session.commit() admins = Admin.query.all() return render_template('admin/add.html',admins=admins) admins = Admin.query.all() return render_template('admin/add.html',admins=admins) @admin.route('/show') def show(): return 'admin_show'
#app/templates/admin/add.html
{% if admins %}AdminsAdd
UserName | |
---|---|
{{u.username}} | {{u.email}} |
#app/templates/user/add.html
{% if users %}UserAdd
UserName | |
---|---|
{{u.username}} | {{u.email}} |
#app/views.py
from app import app from .admin import admin from .user import user app.register_blueprint(admin,url_prefix='/admin') app.register_blueprint(user, url_prefix='/user')
#run.py
from app import app app.run()
到这里也就结束了,这样这个例子就结合了蓝图和flask-sqlalchemy.本例中只使用了db.session.add()
,其它的还有db.session.delete()
...
看一下效果:
localhost:5000/user/add
localhost:5000/admin/add
关于怎么在flask框架中配置mysql数据库问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联成都网站设计公司行业资讯频道了解更多相关知识。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。