首页 > 代码库 > Flask-16 Using Flask-SQLAlchemy
Flask-16 Using Flask-SQLAlchemy
安装Flask-SQLAlchemy
pip install flask-sqlalchemy
载入SQLAlchemy
在hello.py中添加
from flask.ext.sqlalchemy import SQLAlchemy
初始化设置
hello.py中添加
设置数据库链接地址
1 app.config[‘SQLALCHEMY_DATABASE_URI‘] = ‘mysql+mysqldb://<数据库用户名>:<密码>@<数据库地址>/<数据库名称>?charset=utf8‘
创建User类
1 class User(db.Model): 2 __tablename__ = ‘username‘ 3 id = db.Column(db.Integer,primary_key=True) 4 name = db.Column(db.String(64),unique = True,index= True) 5 6 def __repr__(self): 7 return ‘<User {0}>‘.format(self.name)
- __tablename__ :表名
- id&name:数据表中两个字段分别为整型和字符型
- def __repr__(self) :对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串
在视图user函数下添加数据库操作语句
1 @app.route(‘/user‘,methods=[‘GET‘,‘POST‘]) 2 def user(): 3 name = None 4 new = False 5 form = NameForm() 6 if form.validate_on_submit(): 7 name = form.name.data 8 form.name.data = http://www.mamicode.com/‘‘ 9 if User.query.filter_by(name=name).first() is None: 10 db.session.add(User(name = name)) 11 db.session.commit() 12 new = True 13 return render_template(‘user.html‘,form = form,name = name,new = new)
- new:是否新用户标志位,默认为flase,当数据库中未查找到输入的用户名时标志变为true,最后将值传给user.html
- User.query.filter_by(name=name).first():查询数据表,name =输入的用户名,并返回查找到的第一条记录
- db.session.add(User(name = name)):在数据表中插入一条user记录
在user.html中添加是否为新用户判断条件
1 {% block page_content %} 2 <div class="container"> 3 <div class="row"> 4 <div class="col-md-3"> 5 {{ wtf.quick_form(form) }} 6 {% if name %} 7 {% if new %} 8 <h1> Welcome, {{ name }}</h1> 9 {% else %} 10 <h1>See you again, {{ name }}</h1> 11 {% endif %} 12 {% endif %} 13 </div> 14 </div> 15 </div> 16 {% endblock %}
{% if new %}{% else %}{% endif %}:判断new值,为True时显示Welcom <user>,为False时See you again,<user>
数据库操作语句
- User.query.all():查找数据表中所有记录
- User.query.filter(User.name.startswith(‘M‘)).all():查找数据表中所有以M开头的用户名
- u=User(name=‘John‘):利用User类生成一条字符"<User John>"
- db.session.add(u):在数据表中添加John用户,“<User John>"
- db.commit():提交数据表的修改操作
- db.session.delete(u):数据表中删除John用户
Flask-16 Using Flask-SQLAlchemy
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。