在开发过程中,我将使用SQLite数据库。SQLite数据库是开发小型应用程序(有时甚至不是那么小的应用程序)最方便的选择,因为每个数据库都存储在磁盘上的单个文件中,并且不需要运行像MySQL和PostgreSQL这样的数据库服务器。
我们有两个新的配置项要添加到配置文件中:
config.py:
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
# ...
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
数据库将在应用程序中由数据库实例表示。数据库迁移引擎也将有一个实例。这些是需要在应用程序运行后在app/__init__.py文件中创建的对象:
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)
migrate = Migrate(app, db)
from app import routes, models
知道用户表,我可以将其转换为新的app/models.py模块中的代码:
from app import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
password_hash = db.Column(db.String(128))
def __repr__(self):
return '<User {}>'.format(self.username)