ORM-SQLAlchemy

基本用法


from sqlalchemy import create_engine
-- 创建数据库连接/池
engine = create_engine()

-- 建表:使用declarative_base()函数创建基类
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

-- 创建User表
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String)
    password = Column(String)

-- 这一行必须要放在表的类的下面,否者会运行错误
-- 检查users表是否存在,如果存在,则跳过运行,不存在创建users表
Base.metadata.create_all(engine)

-- 创建会话
from sqlalchemy.orm import sessionmaker

-- 创建与数据库的会话session class , 这里返回给session的是个class,不是实例
Session = sessionmaker(bind=engine)
session = Session()
ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')
session.add(ed_user)
session.commit()

数据查询

#获取所有数据
session.query(Person).all()

#获取某一列数据,类似于django的get,如果返回数据为多个则报错
session.query(Person).filter(Person.name=='jack').one()

#获取返回数据的第一行
session.query(Person).first()

#过滤数据
session.query(Person.name).filter(Person.id>1).all()

#limit
session.query(Person).all()[1:3]

#order by
session.query(Person).ordre_by(-Person.id)

#equal/like/in
query = session.query(Person)
query.filter(Person.id==1).all()
query.filter(Person.id!=1).all()
query.filter(Person.name.like('%ac%')).all()
query.filter(Person.id.in_([1,2,3])).all()
query.filter(~Person.id.in_([1,2,3])).all()
query.filter(Person.name==None).all()

#and or
from sqlalchemy import and_
query.filter(and_(Person.id==1, Person.name=='jack')).all()
query.filter(Person.id==1, Person.name=='jack').all()
query.filter(Person.id==1).filter(Person.name=='jack').all()
from sqlalchemy import or_
query.filter(or_(Person.id==1, Person.id==2)).all()

Ref:
https://juejin.im/post/5bf741886fb9a049fa0f671e

https://www.osgeo.cn/sqlalchemy/orm/extensions/index.html

https://www.cnblogs.com/liu-yao/p/5342656.html

https://farer.org/2017/10/28/sqlalchemy_scoped_session/

你可能感兴趣的:(ORM-SQLAlchemy)