sqlalchemy可以只查某一列吗

 我来答
ciellemon
2018-11-08
知道答主
回答量:1
采纳率:0%
帮助的人:792
展开全部

(百度这个编辑功能太渣了,markdown/markup都不支持,缩进都没了,凑合看吧。)

注意以以下查询返回的不再是DeclarativeMeta对象,而是单纯的tuple对象,也就是说没有列名。

  1. 用query的with_entites方法:

User.query.with_entities(User.id,User.dept_id).all()

2.如果有外键关系,可以使用join进行关联,join的参数要用relationship的backref值:

# Model User

class User(db.Model):

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

username = db.Column(db.String(40), unique = True, nullable = False)

password = db.Column(db.String(32), nullable = False)

email = db.Column(db.String(120), unique = True)

realname = db.Column(db.String(20))

dept_id = db.Column(db.Integer, db.ForeignKey('department.id'))


def __init__(self, username, password, email, realname, dept_id):

self.username = username

self.password = password

self.email = email

self.realname = realname

self.dept_id = dept_id

#Model Department

class Department(db.Model):

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

department_name = db.Column(db.String, unique=True, nullable=True)

users = db.relationship('User', backref='dept',lazy='dynamic')

def __init__(self,department_name):

self.department_name = department_name

def __repr__(self):

return '<Department %r>' % self.department_name

查询方法:

User.query.with_entities(User.id,User.username,Department.department_name).join(User.dept).all()

等价于:

SELECT "user".id AS user_id, "user".username AS user_username, department.department_name AS department_department_name FROM "user" JOIN department ON department.id = "user".dept_id

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三柔爱手旅情5577
2017-07-02 · TA获得超过377个赞
知道答主
回答量:413
采纳率:0%
帮助的人:179万
展开全部
通过Flask-SQLAlchemy提供的一个query属性,当你通过model类uery属性,你可以得到一个数据库表的查询结果集。
i.User.query.filter_by(username='peter').first(),通过filter_by方法里的条件表达式来对query所得到的结果集进行过滤,得到你想要得到的结果。
example:
Retrieve a user by username通过username属性为’peter‘过滤结果集:
>>> peter = User.query.filter_by(username='peter').first()
>>> peter.id
1
>>> peter.email
u'peter@example.org'
当不存在结果集时返回none:
>>> missing = User.query.filter_by(username='missing').first()
>>> missing is None
True
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式