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

数据库操作

127次阅读
没有评论

共计 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、短信等云产品特惠热卖中