共计 2407 个字符,预计需要花费 7 分钟才能阅读完成。
一、数据库迁移
1、安装
pip install flask-script
pip install flask-migrate
2、创建迁移对象
from flask_script import Manager | |
from flask_migrate import Migrate, MigrateCommand | |
migrate = Migrate(app, db) | |
manager = Manager(app) | |
manager.add_command("db", MigrateCommand) | |
if __name__ == "__main__": | |
manager.run() |
3、创建迁移文件目录
python manage.py db init
结果:在工程目录下自动生成一个名为 migrations 的目录
4、生成迁移文件
python manage.py db migrate -m“说明信息,注意不能有中文”
python manage.py db migrate -m "first"
结果:在 versions 目录下生成迁移文件
5、执行迁移(更新数据库)
python manage.py db upgrade
6、查看迁移历史版本
python manage.py db history
二、普通方式数据增删改
注意
-
sqlalchemy 默认是开启了事务处理
-
每次操作完需要 db.session.commit 或者 db.session.rollback()
1、添加数据
-
添加一条数据
def insert(): try: u = User(uusername='lucky', usex=True, uage=18, uinfo='lucky 个人信息') db.session.add(u) db.session.commit() except: db.session.rollback() return '添加一条数据' -
添加多条数据
def insert_many(): try: u1 = User(uusername='lucky', usex=True, uage=18, uinfo='lucky 个人信息') u1 = User(uusername='迪丽热巴', usex=False, uage=28, uinfo='迪丽热巴个人信息') db.session.add_all([u1, u2]) db.session.commit() except: db.session.rollback() return '添加多条数据'
2、修改数据
'/update/') | .route(|
def update(): | |
u = User.query.get(1) | |
try: | |
u.uusername = '杨幂' | |
db.session.add(data) | |
db.session.commit() | |
except: | |
db.session.rollback() | |
return '修改' |
3、删除数据
'/delete/') | .route(|
def delete(): | |
try: | |
data = User.query.get(1) | |
db.session.delete(data) | |
db.session.commit() | |
except: | |
db.session.rollback() | |
return '删除数据' |
三、定义增删改基础类与使用
1、定义类
db.py
class DBParent(): | |
# 添加和修改的方法 | |
def save(self): | |
try: | |
db.session.add(self) # 添加对象到数据库 self 代表当前类的实例化的对象 | |
db.session.commit() | |
return True # 成功 返回 True | |
except: | |
db.session.rollback() | |
return False # 失败回滚返回 False | |
# 添加所有的方法 | |
def saveAll(*args): | |
try: | |
db.session.add_all(*args) | |
db.session.commit() | |
return True | |
except: | |
db.session.rollback() | |
return False | |
# 删除的方法 | |
def delete(self): | |
try: | |
db.session.delete(self) | |
db.session.commit() | |
return True | |
except: | |
db.session.rollback() | |
return False | |
db.DBParent = DBParent |
模型继承 DBParent
from exts import db | |
# 继承 db.DBParent,就拥有了自定义类的方法 | |
class User(db.Model, db.DBParent): | |
... |
2、使用
-
添加数据
添加一条数据
def insert(): u = User(uusername='lucky', usex=True, uage=18, uinfo='lucky 个人信息') u.save() return '添加一条数据' 添加多条数据
def insert_many(): u1 = User(uusername='lucky', usex=True, uage=18, uinfo='lucky 个人信息') u1 = User(uusername='迪丽热巴', usex=False, uage=28, uinfo='迪丽热巴个人信息') User.saveAll(u1, u2) return '添加多条数据' -
修改数据
'/update/') .route(def update(): u = User.query.get(1) u.uusername = 'lucky' u.save() return '修改' -
删除数据
'/delete/') .route(def delete(): u = User.query.get(1) u.delete() return '删除'
正文完
星哥玩云-微信公众号
