SQLAlchemy教程-第五章-其他-占坑

有几点还没有写.

  1. 分页.
  2. 创建表.

下面是分页的内容

from models import *


# 测试分页功能
def query_paginate():
    emps = sess.query(Emp).order_by(Emp.empno.asc()).limit(3).offset(3).all()
    for item in emps:
        print(item)
    '''
    output:
    
    {'empno': 7566, 'ename': 'JONES', 'job': 'MANAGER', 'deptno': 20, 'sal': Decimal('2975.00'), 'comm': None}
    {'empno': 7654, 'ename': 'MARTIN', 'job': 'SALESMAN', 'deptno': 30, 'sal': Decimal('1250.00'), 'comm': Decimal('1400.00')}
    {'empno': 7698, 'ename': 'BLAKE', 'job': 'MANAGER', 'deptno': 30, 'sal': Decimal('2850.00'), 'comm': None}
    
    
    
    '''


# 测试分页功能2, 如果把 offset和limit调换顺序呢?其实也没问题好像。 目前我没有深究
def query_paginate2():
    emps = sess.query(Emp).order_by(Emp.empno.asc()).offset(3).limit(3).all()
    for item in emps:
        print(item)
    '''
    
    output:
    
    {'empno': 7566, 'ename': 'JONES', 'job': 'MANAGER', 'deptno': 20, 'sal': Decimal('2975.00'), 'comm': None}
    {'empno': 7654, 'ename': 'MARTIN', 'job': 'SALESMAN', 'deptno': 30, 'sal': Decimal('1250.00'), 'comm': Decimal('1400.00')}
    {'empno': 7698, 'ename': 'BLAKE', 'job': 'MANAGER', 'deptno': 30, 'sal': Decimal('2850.00'), 'comm': None}
    '''


'''
note:

请大家注意, sqlalchemy和flask-sqlalchemy是两个不同的包。
sqlalchemy是原生的,核心。
flask-sqlalchemy是根据sqlalchemy, 为flask量身定制开发的。 flask是一个web轻量级框架。
请注意sqlalchemy和flask-sqlalchemy的界限。
paginate函数是flask-sqlalchemy的方法, 不属于原生的sqlalchemy, 鉴于时间和精力的关系, 我不在这里写了。

'''


if __name__ == '__main__':
    query_paginate2()

如果要创建表的话,使用Base.metadata.create_all(engine), 具体请参考
db_util.py里面的方法。

sqlalchemy的教程到这里就暂时结束了。
这篇教程了里缺少的东西有很多, 我想了一下, 主要缺的有, 关系, 比如relation的写法, flask-sqlalchemy的写法(flask-sqlachemy是结合web框架的),限于精力和时间,以及主要是个人懒惰,没有啥动力,就不想往下写了。

特别强调一下, relation,也就是关系,主键外键等等约束,如果你很感兴趣的话, 去官方文档查看。 可以使用编程手动实现这些主键外键约束,关系等等。 个人感觉没有必要太在这上面花时间。
据说,生产环境不怎么使用外键和关系, 我也不知道为啥。


SQLAlchemy官方网站
http://docs.sqlalchemy.org/en/latest/contents.html
教程全部代码github地址
https://github.com/notfresh/sqlalchemy_demo

猜你喜欢

转载自www.cnblogs.com/notfresh/p/9286965.html