flask-sqlalchemy使用,flask-migrate使用

1|0flask-sqlalchemy使用,flask-migrate使用

2|0flask-sqlalchemy使用

集成到flask中,我们可以用sqlalchemy来做,就是比较的繁琐 现在有一个第三方的flask-sqlalchemy,可以快速的集成到flask中 # 使用flask-sqlalchemy集成 1.下载flask-sqlalchemy # pip install flask-sqlalchemy 2.导入flask-sqlalchemy # from flask-sqlalchemy improt SQLAlchemy 3.实例化得到对象 # db = SQLAlchemy() 4.视图函数中使用session # 全局的session 5.在py文件中继承Model # db.Model 6.写入字段 # useranem= db.Column(db.String(80),unique=True,nullable=False) 7.在配置文件中加入 # SQLALCHEMY_DATABASE_URI = create_engine("mysql+pymysql://root@127.0.0.1:3306/aaa") # SQLALCHEMY_POOL_SIZE = 5 # SQLALCHEMY_POOL_TIMEOUT = 30 # SQLALCHEMY_POOL_RECYCLE = -1 # 追踪对象的修改并且发送信号 # SQLALCHEMY_TRACK_MODIFICATIONS = False

3|0py文件

from flask import Flask # from flask_sqlalchemy improt SQLAlchemy from flask_sqlalchemy import SQLAlchemy app=Flask(__name__) app.config.from_pyfile('settings.py') # 实例化得到对象 db = SQLAlchemy() # 将db注册到app中 db.init_app(app) @app.route('/') def index(): from models import Book db.session.add(Book(name='xxxxx')) db.session.commit() return '增加成功' if __name__ == '__main__': app.run()

4|0settings.py

SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123@127.0.0.1:3306/ddd" SQLALCHEMY_POOL_SIZE = 5 SQLALCHEMY_POOL_TIMEOUT = 30 SQLALCHEMY_POOL_RECYCLE = -1 # 追踪对象的修改并且发送信号 SQLALCHEMY_TRACK_MODIFICATIONS = False

5|0model.py

from manage import db class Book(db.Model): __tablename__ = 'books' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32))

6|0flask-migrate使用

# 表发生变化,都会有记录的,自动同步到数据库中的 原生的sqlalchemy,不支持修改表的 flask-migrate可以实现类似于django的表迁移,将数据同步到数据库中 # django中表迁移 python manage.py makemigrations python manage.py migrate
# 使用步骤 flask:2.2.2 flask-script:2.0.3 1 第一步:安装,依赖于flask-script pip3.8 install flask-migrate==2.7.0 2 在app所在的py文件中 from flask_script import Manager from flask_migrate import Migrate, MigrateCommand manager = Manager(app) Migrate(app, db) manager.add_command('db', MigrateCommand) manager.run() # 以后使用python manage.py runserver 启动项目 3 以后第一次执行一下 python manage.py db init # 生成一个migrations文件夹,里面以后不要动,记录迁移的编号 4 以后在models.py 写表,加字段,删字段,改参数 5 只需要执行 python manage.py db migrate # 记录 python manage.py db upgrade # 真正的同步进去
""" python3 manage.py db init 只执行一次,初始化的时候使用 会在项目路径下生成migrations文件夹,用来管理表变化 python3 manage.py db migrate 等同于django的makemigrations,只是做个记录 python3 manage.py db upgrade 等同于django的migrate把变化同步到数据库中 """

7|0manage.py

from sansa import create_app from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from sansa import db app = create_app() # flask-script的使用 # 第一步:初始化出flask_script的manage manager = Manager(app) # 第二步:使用flask_migrate的Migrate 包裹一下app和db(sqlalchemy对象) Migrate(app, db) # 第三步:把命令增加到flask-script中去 manager.add_command('db', MigrateCommand) # 多出三个命令 init migrate upgrade # python manage.py upgrade if __name__ == '__main__': # app.run() manager.run()

8|0model.py

from . import db # 第三步:把db导入,直接继承db.Model class Users(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) # email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %s>' % self.username

9|0setttings.py

class BaseConfig(object): SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root@127.0.0.1:3306/ddd?charset=utf8" SQLALCHEMY_POOL_SIZE = 5 SQLALCHEMY_POOL_TIMEOUT = 30 SQLALCHEMY_POOL_RECYCLE = -1 # 追踪对象的修改并且发送信号 SQLALCHEMY_TRACK_MODIFICATIONS = False

__EOF__

本文作者泡芙有点甜
本文链接https://www.cnblogs.com/zx0524/p/17306722.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   小王应该在学习!  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示