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

浙公网安备 33010602011771号