一.创建数据库
通过命令行工具提前创建项目需要的数据库
注意事项:数据库需要开启远程登录权限
#1.登录数据库:
mysql -uusername -p
#2.创建新的登录用户:
create user newname identified by 'password';
#3.远程登录授权
grant all privileges on *.* to 'newusername'@'%' identified by 'password' with grant option;
#4.刷新
flush privileges;
#5.创建数据库
create database 'databasename'
二.数据库配置
文件:project/app/config.py
class Confit:
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACH_MODIFICATIONS = False
#开发环境
class DevelopmentConfig(Config):
#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(base_dir,'blog-dev.sqlite')
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:1126482@localhost:3306/yiyou_dev?charset=utf8'
#测试环境
class TestingConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:1126482@localhost:3306/yiyou_test?charset=utf8'
#生产环境
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:1126482@localhost:3306/yiyou?charset=utf8'
三、创建模型
from app.extensions import db
class Country(db.Model):
__tablename__='country'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(30),unique=True)
city = db.relationship('city', backref='country', lazy='lazy')
class City(db.Model):
__tablename__='city'
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(30))
country_id = db.Column(db.Integer,db.ForeignKey('country.id'))
四、数据库迁移
文件:project/app/manager.py
#一、导入数据库迁移扩展库
from flask_migrate import Migrate, MigrateCommand
#二、创建数据库迁移对象
migrate = Migrate(app,db)
#三、添加操作命令
manage.add_command('db',MigrateCommand)
运行:
- 初始化数据库迁移仓库,会创建一个migrations的文件夹,存放迁移脚本
python manage.py db init- 创建迁移脚本,会根据模型与数据表的差异创建弥补差异的脚本
python manage.py db migrate- 执行迁移脚本,完成数据库的迁移
python manage.py db upgrade
其他:添加manage命令,操作数据库
文件:project/app/manager.py
#创建命令行控制对象
manager = Manager(app)
#创建数据库
@manager.command
def create():
db.create_all()
return '数据库已创建'
#删除数据库
@manager.command
def drop():
if prompt_bool('确定要删除数据库然后跑路吗?'):
db.drop_all()
return '数据库删除完成'
return '删除需谨慎!'
运行:python manager.py(启动文件) create/drop