首页 > 代码库 > 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)
  1. __tablename__ :表名
  2. id&name:数据表中两个字段分别为整型和字符型
  3. 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)
  1. new:是否新用户标志位,默认为flase,当数据库中未查找到输入的用户名时标志变为true,最后将值传给user.html
  2. User.query.filter_by(name=name).first():查询数据表,name =输入的用户名,并返回查找到的第一条记录
  3. 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>

数据库操作语句

  1. User.query.all():查找数据表中所有记录
  2. User.query.filter(User.name.startswith(‘M‘)).all():查找数据表中所有以M开头的用户名
  3. u=User(name=‘John‘):利用User类生成一条字符"<User John>"
  4. db.session.add(u):在数据表中添加John用户,“<User John>"
  5. db.commit():提交数据表的修改操作
  6. db.session.delete(u):数据表中删除John用户

 

Flask-16 Using Flask-SQLAlchemy