鍍金池/ 問(wèn)答/Python  數(shù)據(jù)庫(kù)/ 為什么在使用query對(duì)象時(shí),返回的一個(gè)是不一樣的類型啊。

為什么在使用query對(duì)象時(shí),返回的一個(gè)是不一樣的類型啊。

圖片描述

回答
編輯回答
墨染殤

以我的項(xiàng)目為例——基于 flask 的 CRUD 操作

其中 models.py 里的定義如下(源碼地址:https://github.com/eastossifrage/flask-wtf-crud/blob/basic/app/models.py

class User(db.Model):
    '''Example for crud
    以用戶為例,來(lái)展示 CRUD 操作!
    '''
    __tablename__ = 'crud'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    email = db.Column(db.String(64), unique=True, index=True)
    status = db.Column(db.Boolean, default=False)
    role = db.Column(db.Boolean, default=False)

    def __repr__(self):
        return '<User %r>' % self.username

根據(jù)你的例子,你的 UserRole 兩個(gè)類中,前者沒(méi)有定義 __repr__(self),而后者定義了 __repr__(self) 類,所以造成你的顯示結(jié)果出現(xiàn)了不同的情況。

再者,建議看看資料,定義類的時(shí)候,注意一下 __repr__(self)__str__(self) 兩個(gè)屬性。

簡(jiǎn)單的說(shuō)__repr__(self)是面向程序員的,而__str__(self)是面向用戶的。

最后,送你個(gè)福利http://blog.csdn.net/luckytanggu/article/details/53649156

2018年4月10日 17:45
編輯回答
薄荷綠

你的User和Role是兩個(gè)不同的class啊,所以返回不同的
如果是輸出的話,query.all()調(diào)用的是__repr__這個(gè)方法,你檢查下User是否定義了__repr__這個(gè)方法,可以看下你的Role是怎么定義這個(gè)方法的

2018年2月18日 23:18
編輯回答
尤禮

返回的是包裝后的對(duì)象

2018年5月11日 01:14
編輯回答
尛曖昧

返回類型為python里的List,List里存儲(chǔ)的內(nèi)容為User和Role對(duì)象。
故返回類型相同,返回內(nèi)容不同。

2017年8月17日 04:04