flask sqlalchemy(基础篇)

本文详细介绍了如何使用Flask-SQLAlchemy库进行创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,包括单条和批量插入,查询条件筛选、排序及数据修改和删除。
摘要由CSDN通过智能技术生成

本篇主要记录常用的 CURD 操作。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
	# 下面是定义表内字段
    index = db.Column('index', db.Integer, primary_key=True, autoincrement=True)
    nick = db.Column(db.String(100), default="unknown")
    email = db.Column(db.String(255), unique=True)
    phone = db.Column(db.String(11), unique=True)
	
	# 这里是赋值操作,一个User类实例化后,对应的就是一条记录
    def __init__(self, index, nick, email, phone):
        self.index = index
        self.nick = nick
        self.email = email
        self.phone = phone
   	
" ------ 增(Create) ------ "
   	
   	@classmethod
   	def create_one_user(cls):  # 单条增加
   		user = cls(nick="lionlone", email="xxxx")
   		db.session.add(user)
   		db.session.commit()
   	
   	@classmethod
   	def create_users(cls):  # 批量增加
   		user1 = cls(nick="lionlone1", email="xxx1")
   		user2 = cls(nick="lionlone2", email="xxx2")
   		db.session.add_all([user1,user2])
   		db.session.commit()
   		
" ------ 查(Read) ------ "
	@classmethod
	def select_user(cls):
		cls.query.all()  # 获取所有记录
		cls.query.all()  # 获取所有记录
        cls.query.first()  # 获取第一条记录
        cls.query.filter(cls.nick == 'lionlone1').first()  # 获取指定条件的第一条值
        # 对查询结果过滤:跳过符合条件的第一条记录,从第2条开始,往后最多返回2条数据
        cls.query.filter(cls.nick == 'lionlone1').offset(1).limit(2).all()
        # 键值处于某个范围区间内
        cls.query.filter(cls.nick.between("lionlone")).all()
        # 键值包含某字符串
        cls.query.filter(cls.nick.contains("lionlone")).all()
        # 键值不包含某字符串
        cls.query.filter(not_(cls.nick.contains("lionlone"))).all()
        # 键值被包含于某个列表中
        cls.query.filter(cls.nick.in_(["lionlone1","lionlone2"])).all()
        # 键值不被包含于某个列表中
        cls.query.filter(cls.nick.notin_(["lionlone1","lionlone2"])).all()
        # 键值以某个字符开始
        cls.query.filter(cls.nick.startswith("a")).all()
        # 键值以某个字符结束
        cls.query.filter(cls.nick.endswith("a")).all()acs
        # 模糊查询
        cls.query.filter(User.nick.like("%n%g")).all()
        # 逻辑表达式 AND OR NOT
        from sqlalchemy import not_, or_, and_
        cls.query.filter(and_(cls.nick.startswith("a"),cls.nick.endswith("b"))).all()
        cls.query.filter(or_(cls.nick.startswith("a"),cls.nick.endswith("b"))).all()
        cls.query.filter(not_(cls.nick.startswith("a")).all()
        # 排序,默认根据主键升序,desc()降序,asc()升序
        cls.query.order_by(cls.index.desc()).all()
        
        
        
" ------ 改(Update) ------ "
	@classmethod
	def update_one_user(): # 先查后改
		db.session.query(cls).filter(cls.nick == "lionlone").update({"phone":"xxxxx"})
		

" ------ 删(Delete) ------ "
	@classmethod
	def delete_user():  # 先查后删,无论查询结果是单条还是多条。
		db.session.query(cls).filter(cls.nick == 'lionlone').delete()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值