flask(二)模型定义

1、建立数据库连接并创建用户模型

在根目录config.py文件添加代码:

DB_USERNAME='root'
DB_PASSWORD='123456'
DB_HOST='127.0.0.1'
DB_PORT='3306'
DB_NAME='flask_train'
DB_URI="mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(DB_USERNAME,DB_PASSWORD,DB_HOST,DB_PORT,DB_NAME)
SQLALCHEMY_DATABASE_URI = DB_URI      # url必须保存到SQLALCHEMY_DATABASE_URI变量
SQLALCHEMY_TRACK_MODIFICATIONS=False  # 关闭动态跟踪,必须设置,没有设置会给出警告实例
SQLALCHEMY_ECHO = True                # 查询时显示原始sql语句

在exts.py添加代码:

from flask_sqlalchemy import SQLAlchemy
ad = SQLAlchemy()

在admin目录下的models.py添加代码:

from exts import db

class Users(db.Model):
    __tablename__='fm_user'
    uid = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(50),nullable=False)  # 用户名不能为空
    password = db.Column(db.String(100),nullable=False)  # 密码不能为空
    email = db.Column(db.String(50),nullable=False,unique=True)  # 邮箱不能为空,而且必须唯一

修改app.py代码:

from flask import Flask
from apps.admin import bp as admin_bp#导入各个模块app
from apps.front import bp as front_bp
from apps.common import bp as common_bp
from exts import db
def create_app():
        app = Flask(__name__)
        #注册蓝图
        app.register_blueprint(admin_bp)
        app.register_blueprint(front_bp)
        app.register_blueprint(common_bp)
        app.config.from_object('config')#使用模块的名字
        db.init_app(app)
        return app
if __name__ == '__main__':
    app = create_app()
    app.run(host='127.0.0.1',port=5000,debug=True)

根目录下新建文件manager.py,文件增加代码:

from flask_script import  Manager
from flask_migrate import Migrate,MigrateCommand
from app import create_app
from exts import db
from apps.admin import models as admin_models
app=create_app()
manager=Manager(app)
Migrate(app,db)
manager.add_command('db',MigrateCommand)
@manager.option('-u', '--username', dest='username')
@manager.option('-p', '--password', dest='password')
@manager.option('-e', '--email', dest='email')
def create_user(username,password,email):
    user=admin_models.Users(username=username,password=password,email=email)
    db.session.add(user)
    db.session.commit()
    print("用户添加成功!")


if __name__=='__main__':
    manager.run()

接下来在命令行中更新数据库操作。
初次操作时,需要初始化创建一个migrations文件夹:

python manager.py db init


创建迁移脚本:

python manager.py db migrate

升级数据库

python manager.py db upgrade

这里有个问题记录一下:如果flask版本过高时执行命令会报错ModuleNotFoundError: No module named 'flask._compat’
解决方法是将报错的地方from ._compat import text_type改成from flask_script._compat import text_type

posted @ 2021-12-28 21:05  、阿红吖  阅读(217)  评论(0)    收藏  举报