Day058 Flask-SQLAlchemy和alembic结合使用

操作步骤如下:

1.配置好数据库连接文件 如config.py

        HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'fs_alembic_demo'
USERNAME = 'root'
PASSWORD = 'root'


DB_URI ="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
      


2.将config.py文件 结合flask项目主要运行文件 如app.py

        from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config


app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = 'user'
 id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    uname = db.Column(db.String(50),nullable=False)
    age = db.Column(db.Integer)
    gender=db.Column(db.String(2))


@app.route('/')
def hello_world():
 return 'Hello World!'


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


3.使用alembic创建一个仓库(初始化仓库):

1.打开dos系统界面

2.cd到当前项目目录中,注意:如果想要使用alembic,则需要先进入到安装了alembic的虚拟环境中,不然就找不到这个命令。

3.然后执行命令 “alembic init [仓库的名字,推荐使用alembic]”


4.修改配置文件:

在`alembic.ini`中,给`sqlalchemy.url`项设置数据库的连接方式。方式跟sqlalchemy的方式是一样的。

sqlalchemy.url = driver://user:pass@localhost/dbname,

给`sqlalchemy.url`项设置数据库的连接操作为:

        sqlalchemy.url = mysql+pymysql://root:root@localhost/fs_alembic_demo?charset=utf8
      

为了使用模型类更新数据库,需要在`alembic/env.py`文件中设置target_metadata项,默认为target_metadata=None。

需要将`target_metadata`的值设置为模型`Base.metadata`,但是要导入`app`

使用sys模块和os模块把当前项目的路径导入到path中:

导入`app`的操作为:

        import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
import app
      

设置target_metadata项操作为:

target_metadata = app.db.Model.metadata

5.自动生成迁移文件:

使用alembic revision --autogenerate -m "提示信息"将当前模型中的状态生成迁移文件。


6.将生成的迁移文件映射到数据库中:

使用alembic upgrade head将刚刚生成的迁移文件,真正映射到数据库中。

同理,如果要降级,那么使用alembic downgrade head。


7. 以后如果修改了模型,重复5、6步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值