首页 > 数据库 >flask-sqlalchemy,flask-migrate

flask-sqlalchemy,flask-migrate

时间:2023-04-11 23:37:11浏览次数:44  
标签:__ sqlalchemy flask app db migrate SQLALCHEMY import

flask-sqlalchemy使用

集成到flask中,直接使用sqlalchemy,

有个第三方flask-sqlalchemy,可以快速的集成到flask中

使用flaks-sqlalchemy集成

# 集成到flask中,直接使用sqlalchemy,看代码
# 有个第三方flask-sqlalchemy,帮助咱们快速的集成到flask中

	
#  使用flask-sqlalchemy集成
	1 导入 from flask_sqlalchemy import SQLAlchemy
    2 实例化得到对象
    	db = SQLAlchemy()
    3  将db注册到app中
    	db.init_app(app)
    4 视图函数中使用session
    	全局的db.session  # 线程安全的
    5 models.py 中继承Model
    	db.Model
    6 写字段 
    	username = db.Column(db.String(80), unique=True, nullable=False)
    7 配置文件中加入
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://[email protected]:3306/ddd?charset=utf8"
    SQLALCHEMY_POOL_SIZE = 5
    SQLALCHEMY_POOL_TIMEOUT = 30
    SQLALCHEMY_POOL_RECYCLE = -1
    # 追踪对象的修改并且发送信号
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    
    
    
    
------------------------------------------------



setting.py
from flask_sqlalchemy import SQLAlchemy
from flask import Flask


class Setting:
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]:3306/ddd?charset=utf8"
    SQLALCHEMY_POOL_SIZE = 5
    SQLALCHEMY_POOL_TIMEOUT = 30
    SQLALCHEMY_POOL_RECYCLE = -1
    # 追踪对象的修改并且发送信号
    SQLALCHEMY_TRACK_MODIFICATIONS = False


app = Flask(__name__)
app.config.from_object(Setting())
# 实例化得到对象
db = SQLAlchemy()
# 将db注册到app中
db.init_app(app)


----
main.py
from settings import app


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


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

flask-migrate使用

表发生变化,都会记录,自动同步到数据库中

原生的sqlalchemy,不支持修改表的

flask-migrate可以实现类似于django的

python manage.py makemigrations #记录
python manage.py migrate #真正的同步到数据库、

使用步骤:

版本用这个flask:2.2.2 flask-script:2.0.3

安装flask-script

pip3.8 install flask-migrate==2.7.0

在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 启动项目

以后第一次执行一下

python manage.py db init  # 生成一个migrations文件夹,里面以后不要动,记录迁移的编号

以后再models.py写表,加字段,删字段,改参数

只需要执行

python manage.py db migrate  # 记录
python manage.py db upgrade  # 真正的同步进去
manage.py

from settings import app, db
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
# 必须要导入一下才能被监控到
# from models import User
manage = Manager(app)
Migrate(app, db)
manage.add_command('db', MigrateCommand)


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


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

settings.py

from flask_sqlalchemy import SQLAlchemy
from flask import Flask


class Setting:
    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:[email protected]:3306/ddd"
    SQLALCHEMY_POOL_SIZE = 5
    SQLALCHEMY_POOL_TIMEOUT = 30
    SQLALCHEMY_POOL_RECYCLE = -1
    # 追踪对象的修改并且发送信号
    SQLALCHEMY_TRACK_MODIFICATIONS = False


app = Flask(__name__)
app.config.from_object(Setting())
# 实例化得到对象
db = SQLAlchemy()
# 将db注册到app中
db.init_app(app)
# 导入模型方便执行迁移的时候可以管理到
from models import *


models.py


from settings import db

from sqlalchemy import Integer, Column


# 需要自己手动迁移
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))


class Pool(db.Model):
    __tablename__ = 'pool'
    id = db.Column(db.Integer, primary_key=True)
    pool_name = db.Column(db.String(32), default='123')

标签:__,sqlalchemy,flask,app,db,migrate,SQLALCHEMY,import
From: https://www.cnblogs.com/clever-cat/p/17308257.html

相关文章

  • flask-sqlalchemy使用,flask-migrate使用,flask项目演示
    目录flask-sqlalchemy使用,flask-migrate使用,flask项目演示今日内容详细1flask-sqlalchemy使用2flask-migrate使用3flask项目演示flask-sqlalchemy使用,flask-migrate使用,flask项目演示今日内容详细1flask-sqlalchemy使用#集成到flask中直接使用sqlalchemy#有个第三方fl......
  • flask06
    1sqlalchemy快速插入数据#sqlalchemy是什么orm框架,跟其他的web框架灭有必然联系,可以独立使用#安装,快速使用,执行原生sql#创建表和删除表 -不能创建数据库-不能修改字段(增加,删除)#使用orm插入fromsqlalchemyimportcreate_enginefromsqlalchemy.ormimport......
  • sqlalchemy快速插入数据,scoped_session线程安全,加载类上的装饰器,基本增删改查,django中
    今日内容sqlalchemy快速插入数据sqlalchemy是什么orm框架,跟其他web框架没有必然联系,可以独立使用安装,快速使用,执行原生sql创建表和删除表不能创建数据库不能修改字段(增加,删除)使用orm插入第一步:生成engine对象engine=create_engine("mysql+pymysql://[email protected].......
  • flask框架06 sqlalchemy使用 scoped_session线程安全 一对多 多对多 增删改查
    今日内容详细目录今日内容详细1sqlalchemy快速插入数据2scoped_session线程安全2.1基本使用2.2加在类上的装饰器3基本增删查改3.1基本增删查改和高级查询3.2原生sql3.3django中执行原生sql4一对多4.1表模型4.2新增和基于对象的查询5多对多5.1表模型5.2增加和基于......
  • flask最后 类装饰器定义、flask-sqlalchemy使用、flask-mmigrate使用、flask项目演
    类装饰器1装饰类的装饰器:加在类上的装饰器2类作为装饰器来用:#类作为装饰器来用:(主要用__init__和__call__进行进行功能添加)classWrapper():def__init__(self,func):self.func=funcdef__call__(self,*args,**kwargs):......
  • flask-flask-sqlalchemy使用
    1.flask-sqlalchemy使用1.使用原生sqlalchemy写接口:只要一访问根目录,就会添加这本书fromflaskimportFlaskfromsettingsimportsessionfrommodelsimportBookapp=Flask(__name__)@app.route('/')defindex():'''数据暂时写死,后期可以动态添加'''s......
  • flask-sqlalchemy,flask-migrate
    目录flask-sqlalchemy使用flask-migrateflask-sqlalchemy使用把sqlalchemy集成到flask中使用models#导入fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemyimportColumn,Integer,String,Text,ForeignKe......
  • flask之sqlalchemy快速插入数据-scoped_session线程安全-基本增删改查-表模型一对多-
    目录flask之sqlalchemy快速插入数据-scoped_session线程安全-基本增删改查-表模型一对多-多对多-连表查询今日内容1sqlalchemy快速插入数据2scoped_session线程安全2.1基本使用2.2加在类上的装饰器3基本增删改查3.1基本增删改查和高级查询3.2原生sql3.3django中执行原生sq......
  • flask-sqlalchemy使用,flask-migrate使用
    flask-sqlalchemy使用,flask-migrate使用flask-sqlalchemy使用集成到flask中,我们可以用sqlalchemy来做,就是比较的繁琐现在有一个第三方的flask-sqlalchemy,可以快速的集成到flask中#使用flask-sqlalchemy集成1.下载flask-sqlalchemy#pipinstallflask-sqlalchemy2.导......
  • sqlalchemy详解及 快速使用
    sqlalchemy详解及快速使用快速使用#flask中没有orm框架,对象关系映射,方便我们快速操作数据库#flask,fastapi中用sqlalchemy居多#SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在DBAPI之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用......