- 用到的数据库是sqlite,这个数据库不需要安装(因为这个数据库的运行是基于文件系统的),只要你电脑能运行C语言就行(是个能开机的电脑就可以……)。
- 安装flask-sqlalchemy,SQLAlchemy 是一个常用的数据库抽象层和数据库关系映射包(ORM)
pip install flask-sqlalchemy
配置数据库
from flask_sqlalchemy import SQLAlchemy
import os
basedir = os.path.abspath(os.path.dirname(__file__))
# 我们要把数据库放在当下的文件夹,这个basedir就是当下文件夹的绝对路径
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + \
os.path.join(basedir, 'data.sqlite')
# 这里注意看,写的是URI(统一资源标识符)
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
# SQLALCHEMY_COMMIT_TEARDOWN 因为数据库每次有变动的时候,数据改变,但不会自动的去改变数据库里面的数据,
# 只有你去手动提交,告诉数据库要改变数据的时候才会改变,这里配置这个代表着,不需要你手动的去提交了,自动帮你提交了。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
##初始化数据库
- 设立一个User表。用来之后的注册用的,blog.py:
class User(db.Model):
##创建user表
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
# 如果你学过数据库的话就知道我们一般通过id来作为主键,来找到对应的信息的,通过id来实现唯一性
name = db.Column(db.String(64), unique=True)
python blog.py shell
>>> from blog import db
>>> db.create_all()
- 现在可以在根目录文件看见一个data.sqlite的文件
- 如果文件里最后一行是用的app.run(),输入python blog.py shell后会启动服务器,要改成manager.run()
现在把从前端传过来的数据加到数据库里面:
@app.route('/register', methods=['POST'])
def register():
username = request.form['username']
password = request.form['password']
##如果有输入username
if username:
##数据库里面查找该username
user = User.query.filter_by(name=username)
##数据库没有查到
if user is None:
##添加进数据库
user = User(name=username)
##如果没有app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
##这句后面还要加上db.session.commit()才会提交到数据库
db.session.add(user)
session['known'] = False
else:
session['known'] = True
session['name'] = username
##返回给前端的是从数据库取出来的username
name=session.get('name')
return '你的用户名是 %s' % name
python blog.py runserver -p 7113
- 打开页面,点击提交按钮,发现报错,session is not defined
- 忘记引入session了,在第一行from flask import Flask后面加上
from flask import Flask, session
- 提交后又报错,没有secret_key
- 发现app.config['SECRET_KEY'] = 'a string'写错了,把括号里改成SECRET_KEY就可以了
- 再次提交就可以看到浏览器控制台输出了:你的用户名是xxx,说明和数据库连接成功!
网友评论