flask+redies+mysql

flask+ redis 问题

链接redis 时候出现SQLALCHEMY_TRACK_MODIFICATIONS报错

回退版本 Flask_sqlalchey 2.2 >> 2.1

1
`track_modifications = app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] 报错,需要进行flask的sqlalchemy版本进行回退操作语句 pip install Flask-SQLAlchemy==2.1  `

flask 连接数据库

setting.py 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
DIALECT = 'mysql'
    DRIVER = 'pymysql'
    USERNAME = 'root'
    PASSWORD = '123456'
    HOST = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'cms'
 
    SQLALCHEMY_DATABASE_URI = '{}+{}://{}:{}@{}:{}/{}?charset=utf8'.format(
        DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE
    )
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    SQLALCHEMY_TRACK_MODIFICATIONS = True

manage.py 连接数据库

1
2
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

models.py 创建表

1
2
3
4
5
6
7
from manage import db

class User(db.Model):
pass

class CodeCountRecord(db.Model):
pass

数据迁移 Django 也有这个migrate 还不用下载 美滋滋

pip安装flask-script , flask-migrate

modle.py 对于表的操作流程(在一个文件中是这样).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand

app = Flask(__name__)
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = '你的数据库路径(相关格式百度)' #使用你的数据库
db = SQLAlchemy(app) #ORM

migrate = Migrate(app,db)
manager = Manager(app)
manager.add_command('db',MigrateCommand) #添加db 命令(runserver的用法)

#一个用户表
class User(db.Model):
...
...
省略

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

在命令行界面 运行如下代码

1
2
3
4
5
6
7
8
9
python main.py db init  #创建数据表。并且会在你项目下生成migrations/目录,保存你数据库每次变更的内容。


python main.py db migrate #提交修改

python main.py db upgrade #执行修改 

再看User表,已经改变。 
python main.py db downgrade #回退修改

使用flask迁移数据库,二次创建表问题

那么只需在模型类里面添加语句
table_args = {"extend_existing": True}


参考博客

二次建表
数据库连接+迁移
数据连库接+迁移2
使用falsk_SQLAlchemy连接MySQL
flask报错 KeyError ‘SQLALCHEMY_TRACK_MODIFICATIONS’.md (还是回退版本好用~)