Flask从入门到做出一个博客的大型教程(三)
在开始之前,先来看下项目的整体结构。
flask
├── app
│ ├── forms.py
│ ├── __init__.py
│ ├── routes.py
│ └── templates
│ ├── base.html
│ ├── index.html
│ └── login.html
├── config.py
├── myblog.py
4 数据库
对于一个完整的网站数据库是很重要的,因为你的数据得有位置读取呀,网上很多数据库都用的sqlite,但是,我想使用mysql,所以接下来咱们就以mysql为数据库来讲解喽。
(venv) duke@coding:~/flask_tutorial/flask$ pip install flask-sqlalchemy
这样就可以对数据库进行操作了,但是实际项目中会经常对数据库进行修改,但是一般不会手动的去数据库里进行改动,通常的做法是修改ORM对应的模型,然后再把模型映射到数据库中。在flask里有一个集成的工具是专门做这个事情的,安装它。
(venv) duke@coding:~/flask_tutorial/flask$ pip install flask-migrate
因为我使用的是MySQL数据库,而在python3中不再支持mysqldb,因此我们还需要安装pymysql.
(venv) duke@coding:~/flask_tutorial/flask$ pip install pymysql
需要的组件都安装好了,接下来在配置文件里配置数据库。
app/config.py : 使用配置文件config.py中的内容
import os
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
class Config(object):
#.......
#格式为mysql+pymysql://数据库用户名:密码@数据库地址:端口号/数据库的名字?数据库格式
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@localhost:3306/flaskblog?charset=utf8'
#如果你不打算使用mysql,使用这个连接sqlite也可以
#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(BASE_DIR,'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
配置文件设置好了以后,就要对初始化文件进行修改。
app/_ _ init_ _.py : 数据库的初始化设置
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config.from_object(Config)
#建立数据库关系
db = SQLAlchemy(app)
#绑定app和数据库,以便进行操作
migrate = Migrate(app,db)
from app import routes,models
接下来比较重要的就是设计模型了,model是模型的映射,只有设计好model才能进行一系列的操作。新建一个models.py文件。
(venv) duke@coding:~/flask_tutorial/flask$ touch app/models.py
app/models.py : 用户数据库模型
from app import db
class