阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

数据库操作

244次阅读
没有评论

共计 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、添加数据

  • 添加一条数据

    @view.route('/insert/')
    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 '添加一条数据'
  • 添加多条数据

    @view.route('/insert_many/')
    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、修改数据

@view.route('/update/')
def update():
u = User.query.get(1)
try:
u.uusername = '杨幂'
db.session.add(data)
db.session.commit()
except:
db.session.rollback()
return '修改'

3、删除数据

@view.route('/delete/')
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
# 添加所有的方法
@staticmethod
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、使用

  • 添加数据

    添加一条数据

    @view.route('/insert/')
    def insert():
    u = User(uusername='lucky', usex=True, uage=18, uinfo='lucky 个人信息')
    u.save()
    return '添加一条数据'

    添加多条数据

    @view.route('/insert_many/')
    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 '添加多条数据'
  • 修改数据

    @view.route('/update/')
    def update():
    u = User.query.get(1)
    u.uusername = 'lucky'
    u.save()
    return '修改'
  • 删除数据

    @view.route('/delete/')
    def delete():
    u = User.query.get(1)
    u.delete()
    return '删除'

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计2407字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中