Python常用的ORM/orm框架

本文介绍了Python中两种常用的ORM框架——sqlalchemy和peewee,用于简化数据库操作。sqlalchemy适合企业级项目,示例展示了如何创建数据表、增加、查询、修改和删除数据。peewee则适合个人项目,提供了简洁的API进行数据的增删改查。这两个库极大地提高了开发效率,降低了数据库操作的复杂性。

使用Python做web开发过程中我们肯定会使用到数据库,有人可能使用原生sql进行操作,但大多数都会选择使用ORM方式操作数据库,如果你不知道什么是ORM的话请自行百度。今天唐丁给大家介绍几个常用的ORM库,并列出其中常用的操作数据库的函数。

sqlalchemy

这个框架适合企业级项目的开发

安装

pip install sqlalchemy

数据表样例

class User(Base):
    __tablename__ = 'users'  # 表名
    __table_args__ = {'sqlite_autoincrement': True}

    # 表结构
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(32), nullable=False)  # 有些数据库允许不指定String的长度
    age = Column(Integer, default=0)
    password = Column(String(64), unique=True)

常用操作

# 增加单条数据
user = User(name='Jery',password='123')
# 增加多条数据
session.add_all([
  User(name='Jery',password='123'),
  User(name='Mike',password='123')
  User(name='Don',password='123')
])
# 查找所有-无条件
session.query(User).all()
# 单条件查询
session.query(User).filter(User.id == 4).all()  #返回结果列表
session.query(User).filter(User.id == 4).first()  #返回单个实例
# 多条件查询
session.query(User).filter(User.id == 4, User.name == "donding").all()
# 模糊查询
session.query(User).filter(User.name.like('%e%')).all()
# 排序-升序
session.query(User).order_by(User.name).all()
# 排序-降序
session.query(User).order_by(User.name.desc()).all()
# 限制数量
session.query(User).limit(2)
# 统计数量
session.query(User).order_by(User.name.desc()).count()
# 改
user = session.query(User).filter(User.id == 4).first()
user.name = "dingcong"# 删
user = session.query(User).filter(User.id == 4).first()
session.delete(user)

peewee
不追求性能,推荐个人项目使用

安装

pip install peewee

数据表样例

class BaseModel(Model):
    class Meta:
        database = db
class User(BaseModel):
  username = CharField(unique=True)
常用操作

  # 增
  Patent(title='****',patent_type='实用新型',patent_number='CN202021645688.6',apply_date='2020-08-10',
           public_number='CN212411071U',public_date='2021-01-26',apply_person='***',address='***',
           inventor='唐丁',classification_code='***',main_classification_code='G05D1/02',region_code=32,page_num=9,
           agency='***专利代理有限公司',agent='**',dbcode='***',dbname='***',filename='***',
           status=1,create_time=datetime.now(),update_time=datetime.now()).save()
  p = Person(name='liuchungui', birthday=date(1990, 12, 20), is_relative=True)
  p.save()
  # 删除姓名为perter的数据
  Person.delete().where(Person.name == 'perter').execute()
  # 更新birthday数据
  q = Person.update({Person.birthday: date(1983, 12, 21)}).where(Person.name == 'liuchungui')
  q.execute()
  # 查询单条数据
  p = Person.get(Person.name == 'liuchungui'
  # 使用where().get()查询
  p = Person.select().where(Person.name == 'liuchungui').get()
  # 查询多条数据
  persons = Person.select().where(Person.is_relative == True)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员唐丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值