本文最后更新于:20 天前

视图的使用:

模块的使用:

  1. pycharm创建flask项目
  2. 安装模块
    pip install mysql
    pip install flask-script
    pip install flask-sqlalchemy
    pip install flask-migrate
  3. 创建配置文件settings
    class Config:
         DEBUG = True
         # 配置数据库
         # mysql+pymysql://user:[email protected]:port/databasename
         SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]:3306/flaskday05'
         SQLALCHEMY_TRACK_MODIFICATIONS = False
    
     class DevelopmentConfig(Config):
         ENV = 'development'
    
    
     class ProductionConfig(Config):
         ENV = 'production'
         DDEBUG = False
  4. 新建包文件appsexts
    apps文件夹中的__init__文件:
    from flask import Flask
    
    def create_app():
         app = Flask(__name__, template_folder='../templates', static_folder='../static')
         app.config.from_object(settings.DevelopmentConfig)  # 加载配置文件
         return app
  5. 修改app.py文件,导入apps创建的app对象
    from flask import Flask
    from apps import create_app
    from flask_script import Manager
    
    app = create_app()
    manager = Manager(app=app)
    if __name__ == '__main__':
     manager.run()
  6. exts__init__文件中创建ORM
    #创建一个映射对象
    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy()
  7. 修改apps__init__文件
    def create_app():
         app = Flask(__name__, template_folder='../templates', static_folder='../static')
         app.config.from_object(settings.DevelopmentConfig)  # 加载配置文件
         # 初始化配置db
         db.init_app(app)
         return app
  8. 修改app.py文件,增加一下代码:
    from ext import db
    from flask_migrate import MigrateCommand
    
    # 命令工具
    migrate = Migrate(app=app, db=db)
    manager.add_command('db', MigrateCommand) # 添加命令工具
  9. apps中创建model.py数据库模块
    from datetime import datetime
    from ext import db
    
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        username = db.Column(db.String(15), nullable=False)
        password = db.Column(db.String(12), nullable=False)
        phone = db.Column(db.String(11), unique=True)
        rdatetime = db.Column(db.DateTime, default=datetime.now)
    
        def __str__(self):
            return self.username
  10. app.py文件中,连接模块文件,添加下列代码:
    from apps.user.models import User
  11. 初始化:在终端运行python app.py db init,会自动创建一个migrations文件夹
  12. 转换:在终端运行python app.py db migrate,将现在的数据库配置转化为一个版本文件,存放在migrationsversions文件夹内
  13. 同步:在终端运行python app,py db upgrate,将版本文件输入进数据库,在数据库创建配置好的表和字段

在视图中使用数据库

  • 一个简单的用户注册,将注册的用户信息传递到数据库中
    @user_bp.route('/register', methods=['GET', 'POST'])
    def register():
        if request.method == 'POST':
            username = request.form.get('username')
            password = request.form.get('password')
            repassword = request.form.get('repassword')
            phone = request.form.get('phone')
            if password == repassword:
                # 与模型结合,完成数据库的添加
                # 1. 找到模型类,并创建对象
                user = User()
                # 2. 给对象的属性赋值
                user.username = username
                user.password = password
                user.phone = phone
                # 添加进数据库
                # 3. 将user对象添加到session中(类似缓存)
                db.session.add(user)
                # 4. 提交到数据库
                db.session.commit()
                return '用户注册成功!'
            else:
                return '两次密码不一致!'

flask模块一览

模块关系