Sqlalchemy Stu

Posted by Zhenda on Fri, Feb 7, 2025
Total Views:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
本身知识点
    概念: 通过ORM(对象和表的映射)操作数据库的框架
    步骤
        创建基类
            engine = create_engineURL
            Base = declarative_baseengine 
        定义映射
            子类
                表名
                    __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
    数据库版本管理