python-flask笔记(五)

  • 用到的数据库是sqlite,这个数据库不需要安装(因为这个数据库的运行是基于文件系统的),只要你电脑能运行C语言就行(是个能开机的电脑就可以……)。
  • 安装flask-sqlalchemy,SQLAlchemy 是一个常用的数据库抽象层和数据库关系映射包(ORM)
pip install flask-sqlalchemy

配置数据库

  • blog.py:
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,说明和数据库连接成功!

你可能感兴趣的:(python-flask笔记(五))