Skip to main content
  1. Posts/

Sqlalchemy Stu

·391 words·1 min· loading · loading · ·
Author
Zhenda
A personal website
tech - This article is part of a series.
Part : This Article
本身知识点
    概念: 通过ORM(对象和表的映射)操作数据库的框架
    步骤
        创建基类
            engine = create_engine(URL)
            Base = declarative_base(engine )
        定义映射
            子类
                表名
                    __tablename__ = ''
                备注
                    __table_args__ = {'': ''}
                Column()
                    类型
                        db.
                                Int
                                float
                                double
                                String
                                text
                                longtext
                                Date
                                time
                                datetime
                                bool
                                enum
                    参数
                            primary_key=True
                            autoincrement=True
                        default=
                            doc=
                            comment=
                    外键类
                        ForeignKey('表名.属性')
                            ondelete=''
                                CASCADE
                                DELETE
                                RESTRICT
                relationship('类名')
                    一对多
                        backref=True
                    一对一
                        子表
                            backref=backref('属性', uselist=False)
                    多对多
                        先用Table()设立中间表
                        backref=True, secondary=中间表变量名
        表的操作
            Base.metadata.drop_all()
            Base.metadata.create_all()
        CRUD
                session = sessionmaker(engine )()
                        子类对象
                        session = add(子类对象)
                        session.query(子类名).filter()
                            first()
                    高级
                        session.query().order_by()
                            all()
                        分页查询
                            方法1
                                session.query().slice()
                                    all()
                            方法2
                                session.query().offset().limit()
                                    all()
                session.commit()
        其他
            with_entities()
            子类.sort.asc()
alembic
    数据库版本管理
tech - This article is part of a series.
Part : This Article