sqlalchemy常用语法

一、新增数据  

# 新增一条数据
user_obj = User(name="bigberg", passwd="twgdh123")
Session.add(user_obj)
Session.commit()

# 新增多条数据
user_obj1 = User(name="bigberg", passwd="twgdh123")
user_obj2 = User(name="someone", passwd="twgdh123")
Session.add_all([user_obj1,user_obj2])

Session.commit()

  

二、查询数据

2.1普通查询

# filter_by获取的是对象列表
data = Session.query(User).filter_by(name='bigberg').all()
print(data)
print(data[0].id, data[0].name, data[0].passwd)

#输出
[<__main__.User object at 0x0000029DC2D51160>]
1 bigberg twgdh123


# 不指定条件
data = Session.query(User).filter_by().all()
print(data)
print(data[0].id, data[0].name, data[0].passwd)

# 输出
[<__main__.User object at 0x0000026C9D27F0F0>, <__main__.User object at 0x0000026C9D27F160>, <__main__.User object at 0x0000026C9D27F1D0>]
1 bigberg twgdh123

  

2.2 查询数据显性展示

  在类中定义

class User(Base):
    __tablename__ = "user"  # 表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    passwd = Column(String(64))

    def __repr__(self):
        return "id:%s name:%s password:%s" % (self.id, self.name, self.passwd) 
data = Session.query(User).filter_by().all()
print(data)
print(data[0].id, data[0].name, data[0].passwd)

#输出
[id:1 name:bigberg password:twgdh123, id:2 name:Jerry password:twgdh123, id:3 name:Jack password:twgdh123]
1 bigberg twgdh123

  

2.3 获取第一条数据

data = Session.query(User).filter_by().first()
print(data)
print(data.id, data.name, data.passwd)

# 输出
id:1 name:bigberg password:twgdh123
1 bigberg twgdh123

  

2.4 获取所有数据

print(Session.query(User.id, User.name, User.passwd).all())

#输出
[(1, 'bigberg', 'twgdh123'), (2, 'Jerry', 'twgdh123'), (3, 'Jack', 'twgdh123')]

  

2.5 多条件查询 

data = Session.query(User).filter(User.id > 2).filter(User.id < 7).all()
print(data)

#输出
[id:3 name:Jack password:twgdh123]

  

2.6 模糊查询

data = Session.query(User).filter(User.name.like('J%')).all()

#输出
[id:2 name:Jerry password:twgdh123, id:3 name:Jack password:twgdh123]

  

2.7 and / or

from sqlalchemy import and_, or_

data = Session.query(User).filter(and_(User.id > 2, User.name.like('J%'))).all()
print(data)

#输出
[id:3 name:Jack password:twgdh123]

 

2.8 in_ 

data = Session.query(User).filter(User.id.in_([1,3])).all()
print(data)


data = Session.query(User).filter(User.name.in_(['bigberg', 'Jack'])).all()
print(data)

 

2.9 排序

data = Session.query(User).order_by(User.name.desc()).all()
print(data)

  

三、修改数据

  • 第一种赋值
# data = Session.query(User).filter(User.name=='Marry').first()
data = Session.query(User).filter_by(name='Marry').first()
data.name = 'Tom'
Session.commit()
  • 第二种update
Session.query(User).filter_by(name='Tom').update({'name': 'Hary'})
Session.commit()
  • 回滚
ession.query(User).filter_by(name='Hary').update({'name': 'John'})
print(Session.query(User).filter_by(name='John').all())
# 回滚
Session.rollback()
print(Session.query(User).filter_by(name='John').all())
Session.commit()

#输出
[id:2 name:John password:twgdh123]
[]

mysql> select * from user;
+----+---------+----------+
| id | name    | passwd   |
+----+---------+----------+
|  1 | bigberg | twgdh123 |
|  2 | Hary    | twgdh123 |
|  3 | Jack    | twgdh123 |
+----+---------+----------+
3 rows in set (0.00 sec)

# Hary 确实没有改成 John

  

四、统计

data = Session.query(User).filter(User.name.like('%a%')).count()
print(data)

#输出
2

  

五、分组

from sqlalchemy import func

data = Session.query(User.name, func.count(User.name)).group_by(User.name).all()
print(data)

# 输出
[('bigberg', 1), ('Hary', 1), ('Jack', 1)]

  

 

转载于:https://www.cnblogs.com/bigberg/p/8318214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值