sqlatable

2017-10-24  本文已影响10人  大诗兄_zl

sqlatable   数据表 对象

slc  slice  表中的一行。

form_data=request.args   url  参数

datasource   数据表 对象 

form_data.get("orderby")   获取 orderby  值

relationship  数据库关系

query_obj   查询 参数 字典

row.index  横坐标

get_data 组装数据

groupby  对列进行分组 运算。

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

=========================

classAddress(Base):...    

 __tablename__='addresses'

...id=Column(Integer,primary_key=True)

...email_address=Column(String,nullable=False)

...user_id=Column(Integer,ForeignKey('users.id'))

......user=relationship("User",backref=backref('addresses',order_by=id))

......def__init__(self,email_address):

...self.email_address=email_address

......def__repr__(self):

...return"〈Address('%s')〉"%self.email_address

让我们注意一下新出现的东东,首先就是user_id的ForeignKey结构,学过数据库的同学都知道ForeignKey意味着外键,这是关系型数据库的核心理论之一,即该列user_id与其外键引用的列users.id存在引用约束(constrained)关系,在数据库层面上来讲,就是表users的user_id列被表users的id列约束,值得注意的是,外键关联的必定是另外一张表的主键。

其次新出现的就是relationship()函数,这个将会告知ORM通过Address.userAddress类自身必须链接到User类。relationship()使用两个表的外键约束来判定这种链接的性质,比如说判定Address.user将会是多对一(many-to-one)关系。

另外在relationship()内还有另外一个函数称为backref(),它将提供一种用于反向查询的细节,比如说在对象User上的Address对象集是通过User.addresses属性引用,那么多对一的关系(many-to-one)反向总会是一对多关系(one-to-many)。还有对于Address.user和User.addresses的关系来说总是双向的。

上一篇 下一篇

猜你喜欢

热点阅读