SQLAlchemy用法指南
什么是SQLAlchemy
SQLAlchemy : python ORM框架
ORM : Object-Relational Mapping,将关系型数据库的表结构映射到对象上
也就是简化了所有关系型数据库的操作,只需使用SQLAlchemy语法进行操作
如何使用SQLAlchemy操作数据库
数据库操作都存在4个基本的功能,增、读、改、删(CRUD)
- 增 : db.session.add()
- 读 : 使用Model.query(),Model.query是db.session.query(Model)的简写
Model.query.all()数据库中所有行
Model.query.limit(10).all()返回十行
Model.query.order_by(User.username).all()正向排序
Model.query.order_by(User.username.desc()).all()逆向排序
Model.query.first()只返回一行
Model.query.get(1)通过主键取得
以上函数皆可以连接起来调用,first()和all()返回结果,终止链式调用
Model.query.paginate(1,10)分页
page.items页数
page.has_prev上一页
page.has_prev下一页
筛选数据:filter_by过滤器
users = User.query.order_by(User.username).filter_by(username='fake')
users = User.query.filter(User.id>1)
- 改 : .update()
- 删 : .delete()
对象之间建立联系
class User(Base):
__tablename__ = 'user'
id = Column(String(20), primary_key=True)
name = Column(String(20))
# 一对多:
books = relationship('Book')
class Book(Base):
__tablename__ = 'book'
id = Column(String(20), primary_key=True)
name = Column(String(20))
# “多”的一方的book表是通过外键关联到user表的:
user_id = Column(String(20), ForeignKey('user.id'))
对象User就是数据库中的一个表,可以使用__tablename__
指定表明,如果不指定,默认为对象名,promary_key设置为主键,ForeignKey是一个外键约束,relationship表示一个关系